2010-12-05 8 views
28

He hecho algunas investigaciones sobre la construcción de diseños que funcionan para múltiples tamaños de pantalla y estoy buscando alguna aclaración.¿Cómo se hacen diseños para varios tamaños de pantalla de Android?

¿Es una práctica común hacer un archivo de diseño separado para cada uno de los tres tamaños de pantalla (pequeño, mediano, grande) o puede hacerlo con un método más sencillo?

He estado probando mis proyectos en un dispositivo de pantalla grande, y aunque utilizo DIP (píxeles independientes de densidad) para relleno, márgenes, etc., aún se arruga cuando lo veo en pantallas más pequeñas. ¿Debo diseñar mis proyectos para pantallas medianas y luego permitir que Android lo escale adecuadamente?

No estoy seguro de si esta es una buena pregunta o no, pero estoy buscando cuál es la práctica común para diseñar para múltiples tamaños de pantalla. ¿Qué haces?

Editar: Además de esto, por ejemplo, digamos que tengo un botón que está 40dip por encima de la parte inferior de la pantalla, ¿debería literalmente escribir 40dip o debería usar algún tipo de cálculo de píxeles como 40 * screenWidth/blahblah o algo así que se escala dependiendo del tamaño de pantalla que tenga el usuario? Tengo experiencia limitada con UI ...

+0

Sí, puede lograr esto de manera simple, vea mi respuesta http://stackoverflow.com/a/16518557/1939564 –

Respuesta

14

Hay dos ejes a considerar cuando se trata del tamaño de la pantalla: tamaño físico y densidad. La densidad se maneja proporcionando mediciones en saltos y recursos escalados según corresponda. Pero la densidad no siempre implica tamaño o viceversa. Consulte http://developer.android.com/guide/practices/screens_support.html para obtener más información sobre la mecánica.

No es común o recomendable tener diferentes diseños según cada pantalla resolución compatible, pero es completamente razonable diseñar diferentes diseños para diferentes clases de tamaño (pequeño, mediano, grande). Las pantallas de diferentes tamaños pueden beneficiarse al agregar, quitar o reposicionar ciertos elementos de navegación según la aplicación.

Dentro de una cierta clase de tamaño, debe asegurarse de que sus diseños toleren las variaciones en la resolución de pantalla exacta. Como sugirió Falmarri, use diseños relativos, pesos y otras herramientas disponibles para que su diseño se alargue con elegancia.

+0

Está bien, así que aquí es donde estaba confundido. Noté que cuando veía mi aplicación en una instancia de emulador de tamaño normal, perdía la última pulgada de los contenidos. Todo estaba escalando y posicionándose correctamente. Entonces, ¿debería usar un diseño separado para los diferentes TAMAÑOS de pantalla, no densidades, correcto? – joepetrakovich

+0

Esa es una forma de hacerlo. Pero si está perdiendo la última pulgada del contenido de su diseño, creo que todo no está escalando y posicionándose correctamente. ;) Hay muchos dispositivos diferentes con diferentes resoluciones y densidades que reportarán el tamaño de la pantalla 'normal'. Un solo diseño debería ser capaz de lidiar con esto. – adamp

+0

¿Debo diseñar mi aplicación como un tamaño de base normal y dejarla escalar a grande entonces? Desde que he estado haciendo lo contrario. – joepetrakovich

1

No hacer diseños separados no es una práctica común. Solo cuando tienes imágenes que no se pueden estirar es realmente la manera recomendada.

Las cosas siempre se verán un poco estiradas/comprimidas cuando se ven en dispositivos con pantallas más pequeñas o más grandes. Esa es una especie de definición de una pantalla de tamaño diferente. Solo debe usar diseños relativos y dejar que android controle los números de píxeles específicos.

+0

Tengo diseños diferentes para cada uno, pero todavía no funciona. http://stackoverflow.com/questions/34378238/landscape-mode-for-app –

+0

Esta pregunta tiene 5 años. Pregunta uno nuevo. – Falmarri

+0

Um, lo sé. Es por eso que uní mi ** nueva ** pregunta ... –

3

La regla general es usar píxeles independientes de la densidad (dips) para las definiciones de tamaño en su diseño xmls: ya veo que ya lo hace. Al hacerlo, solo tengo el único diseño para toda la gama de dispositivos. Lo que debe dividirse es gráficos. Para eso utilizo 3 directorios dibujables diferentes: 'drawable-ldpi', 'drawable-mdpi' y 'drawable-hdpi'. Esto se hace en las imágenes con el fin de tener el mismo tamaño (por no decir, en milímetros) en varias densidades de pantalla (suponiendo tamaño de la pantalla es la misma - Normal, por ejemplo) que deben ser escalados de la siguiente manera:

  • drawable- IPAP: 150%
  • dibujable-mdpi: 100%
  • dibujable-LDPI: 75%

Probablemente se trata de un mal consejo. Sin embargo, si nos fijamos en el Google chart of Screen Sizes and Densities, puede decidir no invertir sus esfuerzos adicionales en pruebas exhaustivas para pantallas grandes, ya que casi no existen tales dispositivos en el mercado.

+0

También apoyo a Falmarri: use diseños relativos. las visualizaciones solo deben llenar el contenido principal o el contenido envolvente. probablemente use constantes solo para el tamaño del texto y las separaciones/márgenes. –

+0

Cuando dices 'escalado', ¿te refieres a algo como: abrir Photoshop, cargar la imagen e ir a archivo> imagen a escala (o algo así) y reducirla en un determinado porcentaje? – joepetrakovich

+0

@PetrakovichJ: Sí, quiero decir que las imágenes deben escalarse en algún editor de imágenes antes de colocarlas en esos directorios. –

Cuestiones relacionadas