¿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

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

  • Diferentes orientaciones de pantalla
  • Android en el cambio de orientación Cambiar
  • Lista de retención en el fragmento de lista sobre el cambio de orientación
  • ¿Por qué se llama onCreate () después de onConfigurationChanged?
  • Cómo alinear un elemento a la derecha en LinearLayout horizontal?
  • Guardando un backstack a través del cambio de orientación
  • ¿Cómo evitar que el diseño se restablezca cuando cambia la orientación de la pantalla?
  • ¿Cuál es la diferencia entre screenOrientation retrato y userPortrait
  • Permitir rotación / paisaje en un fragmento
  • Redibujar múltiples rutas en las mismas posiciones de la orientación anterior de la disposición
  • cómo guardar el estado con onSaveInstanceState y onRestoreInstanceState mientras cambia la orientación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.