studio linearlayout left horizontal ejemplo constraint below java android android-layout orientation

java - linearlayout - Retrato para teléfono, paisaje para tableta(Android-Layout)



linearlayout android studio ejemplo (4)

Así que estoy haciendo una aplicación para Android y quiero forzar la orientación horizontal para tabletas y la orientación vertical para teléfonos. Sin embargo, parece que solo puedo hacer un bloqueo de orientación de lo que he visto, lo que frustra el propósito de querer dos orientaciones separadas para los dispositivos.

Tablets: Landscape Phones: Portrait

Para ponerlo más técnico.

Tengo un diseño en "res / layout-xlarge-land" para paisajismo en la tableta y tengo el diseño original en "res / layout" y solo quiero usar explícitamente layout-xlarge-land para la tableta. Nada más, esencialmente ÚNICAMENTE usando landscape para dispositivos xlarge.

¡Gracias!


Establecer una orientación particular basada en la densidad del dispositivo puede no funcionar porque hay teléfonos que tienen densidades más altas que las tabletas.

Lo que hice fue desactivar el sensor de orientación del dispositivo estableciendo el atributo en la etiqueta de actividad en el archivo de manifiesto de esta manera:

android:screenOrientation="nosensor"

Cuando ejecuta su aplicación, de forma predeterminada la orientación vertical está configurada para teléfonos y paisaje para tabletas (y por lo tanto, seleccionará el archivo xml de layout-xlarge-land ). Y como ha configurado un bloqueo de orientación, permanece en esta orientación.


No estoy del todo seguro de lo que dices, pero parece que debes medir la resolución y actuar en consecuencia. Quiero decir, ¿cómo sabes si se trata de un teléfono o una tableta que no sea la resolución diferente?


Puede medir el tamaño real (en pulgadas) del dispositivo y establecer la orientación mediante programación utilizando:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

o

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Para obtener el tamaño físico del dispositivo, puede usar el código publicado here .

No es 100% exacto, pero es lo suficientemente bueno para decidir qué rey de dispositivo ejecuta la aplicación.


establezca un diseño llamado llTablet en el menú de diseño en los diseños de carpeta "layout-large" y un diseño de llPhone en el menú de diseño en la carpeta "diseño". Por menú me refiero a la primera disposición que el usuario está ingresando. Luego verifica si puedes referenciarlo. Si no puede hacer referencia a llPhone, entonces es una tableta.

llPhone = (LinearLayout) findViewById (R.id.llPhone) if (llPhone == null) { tablet = true; } else { tablet = false; }