studio soporte sizes resolucion pesos para pantallas pantalla multiples layouts diferentes aplicacion adaptar adaptable android layout tablet dpi

soporte - pesos layout android



Cómo incluir apropiadamente diseños de 10 "y 7" (4)

El problema era que no tenía una carpeta de diseño predeterminada.

Intenté salir adelante, usando solo las carpetas sw600dp y sw720dp. Todavía no tengo idea de por qué no funcionan, pero no me importa. No puedo usar swxxxdp <3.2 de todos modos, así que atornilla eso.

Entonces, si quieres escribir una aplicación que tenga que admitir teléfonos (2.2+), tabletas de 7 pulgadas y tabletas de 10 pulgadas, utiliza las siguientes cosas de la vieja escuela:

el diseño es el predeterminado, es necesario incluso si no tiene previsto admitir teléfonos.

layout-large para tablet de 7 "(funciona en emulator y nexus7)

layout-xlarge para tableta de 10 "(funciona en emulator y galaxytab10.1)

Otras personas han llegado a la misma conclusión también.

Nexus 7: 7 "1280x800

Galaxy Tab 10.1 10 "1280x800

Quiero que mi aplicación se ejecute en tabletas de 7 y 10 pulgadas. Por lo que sé, tengo que incluir estas carpetas de diseño en mi aplicación:

para tabletas de 7 pulgadas

  • layout-sw600dp
  • layout-sw600dp-port

para tabletas de 10 pulgadas

  • layout-sw720dp
  • layout-sw720dp-port

Funciona bien en el nexo 7, pero carga los diseños sw600dp en la tableta de 10 ".

Si incluyo estas carpetas predeterminadas:

  • diseño
  • diseño-puerto

La pestaña galaxia de 10 "carga los diseños de estos.

Si solo incluyo las carpetas de diseño predeterminadas y el sw600dp, se bloquea en el nexus7.

¿Cómo se supone que debo admitir teléfonos, tabletas de 7 "y tabletas de 10", si la pestaña de 10 "de la galaxia no carga los diseños de sw720p?

editar: formatear


Esto es muy extraño, ya que estás haciendo lo correcto.

El calificador sw600dp debe ser seleccionado por el Nexus 7.
Si está disponible, el calificador sw720dp debe ser seleccionado por el Galaxy Tab.

¿Estás seguro de que se bloquea al tratar de encontrar un diseño apropiado? Es posible que Android encuentre la distribución correcta, pero es posible que falte algo en el archivo xml de diseño y la falla se debe a eso.


Sí, debe usar carpetas dependientes del diseño pero también asegurarse de que cualquier diseño independiente del dispositivo entre en su carpeta res / layout.

Esto se menciona en el sitio del desarrollador de Android, pero para reiterar su punto, si tiene un diseño que solo está disponible en una carpeta layout-xlarge en una aplicación que admite dispositivos grandes y de tamaño normal, la aplicación se bloqueará como dispositivos más pequeños. no podrá encontrar ninguna coincidencia para este recurso.

Aquí hay una buena estructura de carpetas, comience con:

res/layout

Mantenga un diseño independiente del dispositivo, puede evitar esto si está contabilizando todos los posibles tipos de calificadores, pero esta sigue siendo la opción más segura.

Si desea agregar diseños específicos para, digamos, tabletas de 7 y 10 pulgadas, use todo lo siguiente:

res/layout-large res/layout-xlarge res/layout-sw600dp res/layout-sw720dp res/layout-sw800dp

Y así sucesivamente para cualquier ancho de pantalla de dispositivo específico que desee admitir. Debe tenerse en cuenta que sw600 admite el ancho más pequeño posible, por lo que evita el uso del ancho de la pantalla cuando el dispositivo se mantiene horizontal. Se prefieren las calificaciones swxxxdp, pero estas se agregaron en la API 13, por lo que aún necesitará una versión grande, xlarge para el sistema operativo Android anterior.

En cuanto al uso de los dpi, tenga en cuenta que si SÓLO configura un calificador de densidad para un tamaño, por ejemplo layout-large-mdpi , entonces cualquier dispositivo que coincida con el calificador grande usará diseños desde aquí en lugar de otra carpeta, esto es debido al criterio del mejor partido, sobre el cual puedes leer here . Lo combinará como un dispositivo grande antes de que coincida con la densidad, por lo que las pantallas de densidad que no sean mdpi seguirán usando estos diseños.

Para contrarrestar esto, tendrá que incluir carpetas para cualquier otra densidad que admita, así que haga un layout-large-hdpi siguiendo el ejemplo anterior e incluya en esta carpeta las versiones hdpi de los diseños que haya utilizado en la carpeta mdpi si usted requiere que sean diferentes.

Evite duplicar sus diseños, por supuesto, no copie los diseños independientes del dispositivo en cada carpeta no utilizada si solo los necesita en res/layout , intente y solo mantenga los diseños que necesitan estos calificadores en las carpetas y organícelos adecuadamente, haciendo Asegúrese de que sus carpetas estén nombradas con los calificadores en el orden correcto de precedencia para evitar el uso de la carpeta incorrecta para una combinación de densidad / tamaño.


También estoy enfrentando tal problema en mi aplicación. Pero encontré una buena solución para esto. Tengo solo un diseño para la tablet y el nombre del directorio es layout-sw600dp . Ahora, cuando una parte llegó a problemas de altura y ancho, he creado varios directorios de values diferentes en los que coloco las dimensions y font size y otros apéndices. Por lo tanto, no habrá un valor constant en el layout de la pantalla de la tableta.

androd:layout_width:"60dp" // i drop this scenario androd:layout_width:"@dimen/tab_width" // i used this scenario

y su nombre de directorio de values será como

values-xlarge values-large

Todos los valores se obtendrán de su directorio de valores. No creará un diseño diferente, pero un diseño se puede usar varias veces.

Las siguientes son palabras del sitio Developer.android . Ejemplos de configuración

Para ayudarlo a orientar algunos de sus diseños para diferentes tipos de dispositivos, estos son algunos números para anchos de pantalla típicos:

320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). 480dp: a tweener tablet like the Streak (480x800 mdpi). 600dp: a 7” tablet (600x1024 mdpi). 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

Usando los calificadores de tamaño de la tabla 2, su aplicación puede cambiar entre sus diferentes recursos de diseño para teléfonos y tabletas usando cualquier número que desee para ancho y / o alto. Por ejemplo, si 600dp es el ancho disponible más pequeño compatible con el diseño de su tableta, puede proporcionar estos dos conjuntos de diseños:

res / layout / main_activity.xml # Para teléfonos
res / layout-sw600dp / main_activity.xml # para tabletas

===

En esto, puede ver que, el diseño para 1280 * 720 está en layout-sw720dp por lo que en lugar de crear layout-normal-xlarge debe usar esto que le permite decidir las diferencias. En lugar de identificarse de manera diferente usando layout-large-mdpi y layout-large-ldpi , ¿no se identifica por su smallest width ? Debido a que Android proporciona un directorio de drawables para diferentes imágenes, lo único que importa es su resolución. Y tienes la solución anterior.

Editar

Entonces debes tener que desarrollar diferentes diseños. Ninguna otra opción Encontré en http://jamil.fluidsoul.net/2011/03/06/creating-android-applications-for-multiple-screen-sizes .

Low density Small screens QVGA 240x320 (120dpi): layout-small-ldpi (240x320) layout-small-land-ldpi (320x240) Low density Normal screens WVGA400 240x400 (x432) (120dpi): layout-ldpi (240 x 400 ) layout-land-ldpi (400 x 240 ) Medium density Normal screens HVGA 320x480 (160dpi): layout-mdpi (320 x 480 ) layout-land-mdpi (480 x 320 ) Medium density Large screens HVGA 320x480 (160dpi): layout-large-mdpi (320 x 480 ) layout-large-land-mdpi (480 x 320) Galaxy Tab ( 240 dpi ): layout-large (600 x 1024) layout-large-land (1024 x 600) High density Normal screens WVGA800 480x800 (x854) (240 dpi): layout-hdpi (480 x 800) layout-land-hdpi (800 x 480) Xoom (medium density large but 1280x800 res) (160 dpi): layout-xlarge (800 x 1280) layout-xlarge-land (1280 x 800)