ORIENTACIÓN DE UN DISPOSITIVO
Aunque el marco de Android cargará automáticamente un nuevo recurso (como el diseño) en los cambios de orientación se puede desactivar este comportamiento Si deseamos ser notificado del cambio de la orientación en vez de Android que la maneja automáticamente, debemos agregar el siguiente atributo a la actividad en el manifiesto de Android:
Android: configChanges = "keyboardHidden orientation screenSize"
Cuando se produzca cualquiera de los siguientes cambios de configuración, el sistema le notificará con el parámetro OnConfigurationChanged () en lugar de manejar lo automáticamente:
1.keyboardHidden
2.orientation
3.screenSize
La linea de codigo onConfigurationChanged () es la siguiente: onConfigurationChanged (Configuration newConfig)
Actividad:
En esta actividad demostraremos cómo determinar la orientación actual del dispositivo.
Empecemos:
Cree un nuevo proyecto en Android Studio y asigne le el nombre de GetDeviceOrientation.
En primer lugar agregaremos un botón al diseño para comprobar la orientación que se a pedido. Abrimos Activity_main.xml y hacemos lo siguiente:
1.Reemplazamos el TextView existente con el siguiente Botón:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check Orientation"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="checkOrientation"/>
2.Ahora Agregamos el siguiente método para manejar el clic del botón:
public voidcheckOrientation(View view){
int orientation = getResources().getConfiguration().orientation;
switch (orientation) {
case Configuration.ORIENTATION_LANDSCAPE:
Toast.makeText(MainActivity.this,"ORIENTATION_LANDSCAPE",Toast.LENGTH_SHORT).show();
break;
case Configuration.ORIENTATION_PORTRAIT:
Toast.makeText(MainActivity.this,"ORIENTATION_PORTRAIT",Toast.LENGTH_SHORT).show();
break;
case Configuration.ORIENTATION_UNDEFINED:
Toast.makeText(MainActivity.this,"ORIENTATION_UNDEFINED",Toast.LENGTH_SHORT).show();
break; }
}
3.Ahora ejecutemos la aplicación en un dispositivo o emulador. Utilizamos Ctrl + F11 para girar el emulador.
Cómo funciona:
Todo lo que necesitamos hacer para obtener la orientación actual es llamar a esta línea de código: GetResources (). GetConfiguration ()y La orientación se devuelve como un int, que se compara con uno de los tres posibles valores, Como se ha demostrado. Además la Obtención de la rotación actual del dispositivo es otro escenario en el que se puede necesitar conocer la orientación actual , cuando se trabaja con Datos de la cámara-imágenes y / o videos, a menudo, la imagen puede girarse de acuerdo con el dispositivo o para compensar la orientación actual.
En este escenario existe otra opción disponible para obtener la rotación:
introtation =getWindowManager().getDefaultDisplay().getRotation();
En la línea de código anterior, la rotación será uno de los siguientes valores:
●Surface.ROTATION_0
●Surface.ROTATION_90
●Surface.ROTATION_180
●Surface.ROTATION_270
El valor de rotación será de su orientación normal. Por ejemplo, cuando utilizamos una tabla con una orientación normal del paisaje, si se toma una fotografía la orientación vertical su valor será ROTATION_90 o ROTATION_270.