¿Cómo definimos la orientación de una actividad en Android, basada en el dispositivo?
Tengo una situación en la que, si el dispositivo Android es una tableta, quiero que la orientación se habilite (vertical y horizontal), mientras que si el dispositivo es un teléfono, quiero que la orientación sea sólo en modo vertical. ¿Puedes ayudarme a hacer esto?
Gracias, Nithin
- Evitar que la actividad se reinicie cuando cambie la orientación
- VideoView no sigue la configuración de orientación de la actividad
- Cómo EditarTexto Conserva su valor pero no visualiza texto cuando cambia la orientación del teléfono?
- Cómo volver a cargar los fragmentos en el backstack después del cambio de orientación
- ¿Cómo puedo establecer un ancho máximo en un LinearLayout para que no se estire en modo horizontal?
- Problema de orientación de la cámara OpenCV
- ¿Cuál es la diferencia conceptual entre sensor de vector de rotación y sensor de orientación en Android?
- Android Fragments recreado en el cambio de orientación
- Restaurar la posición de WebView al mismo contenido en el cambio de orientación (Android)
- ¿No puede guardar y restaurar un Fragmento anidado?
- Forzar cierre en modo horizontal, pero no en vertical
- Cómo quitar las pestañas de ActionBar en la orientación horizontal sólo para las tabletas
- Evitar reiniciar fragmento asynctask en cambio de orientación de pantalla
Tienes 2 métodos:
A) Crear diferentes conjuntos de diseño y drawables para el teléfono y la tableta por separado y diseñarlos de acuerdo a la orientación que necesita.
B) Compruebe el dispositivo durante el tiempo de ejecución y ajuste la orientación. Para comprobar el dispositivo, revise los siguientes parámetros y configure la orientación mediante programación,
(1) Build.VERSION.SDK_INT (2) Configuration.SCREENLAYOUT_SIZE_MASK
Prueba esto Funciona perfectamente para mí …..
if ( isXLargeScreen() ) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Y esta función para decidir entre la tableta y los teléfonos, llamado en el IF más arriba …..
public static boolean isXLargeScreen(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE; }
Puede utilizar esta clase para obtener la información del dispositivo sobre la compilación actual, extraída de las propiedades del sistema.
Para establecer las propiedades de orientación, utilice el siguiente atributo …
android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" | "sensorLandscape" | "sensorPortrait" | "sensor" | "fullSensor" | "nosensor"]
Soy un principiante en esto mismo, pero tal vez sería posible hacer esto mediante la orientación de un nivel específico de la API o dpi? Puede proporcionar recursos alternativos para los diferentes dispositivos que está orientando.
Por ejemplo:
res/layout/main.xml res/layout-xhdpi/main.xml res/layout-v11/main.xml
Una buena documentación para eso se puede encontrar aquí .
Obtener la anchura y la altura de la pantalla del dispositivo, si la resolución es menor que la de la tableta, a continuación, puede configurar la orientación de la aplicación a la vertical.
Si es necesario las dimensiones de la pantalla en píxeles de actividad, puede utilizar getSize:
Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; int height = size.y;
Si no es una actividad, puede obtener la visualización predeterminada a través de WINDOW_SERVICE:
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); if(width<= (resolution width of tablet) && height<=(resolution height of tablet)) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
No dar ningún comando en el manifiesto basado en
Android: screenOrientation
- ¿Cuál es el resto del gráfico principal de Eclipse Memory Analyzer?
- ¿Fuerza el androide para enviar paquetes UDP inmediatamente?