Cuando se admiten diferentes tamaños de pantalla (densidades) en Android, a menudo el foco está en crear diferentes diseños para cada pantalla posible. ES DECIR
- ldpi
- mdpi
- hdpi
- xhdpi
- xxhdpi
- xxxhdpi
Diseñé un diseño para una pantalla xhdpi como referencia y definí sus dimensiones en dimens.xml . Ahora quiero dar soporte a todos los tamaños de pantalla posibles. ¿Cómo puedo hacer eso?
Hasta donde sé, puedo usar esta herramienta para determinar el dimens.xml adecuado para otros tamaños de pantalla y agregarlo a mi proyecto. ¿Es esta la forma correcta de hacerlo en mi situación?
Otra pregunta, ¿solo necesito crear dimens.xml para las dimensiones de pantalla anteriores? En caso afirmativo, ¿qué es?w820dp
?
Gracias por tu ayuda. Solo necesito soportar teléfonos (no tabletas u otros dispositivos).
dimesn.xml
archivos para diferentes resoluciones.W820dp
algo compatible con diferentes versiones de Android? ¿También me puede sugerir algún tutorial sobre el soporte de diferentes pantallas en base a dimens.xml?Respuestas:
Debe crear una carpeta de diferentes valores para diferentes pantallas . Me gusta
Para más información puede visitar aquí.
Editado por @humblerookie
Puede utilizar el complemento de Android Studio llamado Dimenify para generar automáticamente valores de dimensión para otros depósitos de píxeles basados en factores de escala personalizados. Todavía está en beta, asegúrese de notificar cualquier problema / sugerencia que encuentre al desarrollador.
fuente
Utilice DP escalable
Aunque hacer un diseño diferente para diferentes tamaños de pantalla es teóricamente una buena idea, puede ser muy difícil adaptarse a todas las dimensiones de pantalla y densidades de píxeles. Tener más de 20+ diferentes
dimens.xml
archivos , como se sugiere en las respuestas anteriores, no es fácil de administrar.Cómo utilizar:
Para utilizar
sdp
:implementation 'com.intuit.sdp:sdp-android:1.0.5'
en tubuild.gradle
,Reemplace cualquier
dp
valor tal como50dp
con un@dimen/50_sdp
similar así:Cómo funciona:
sdp
escala con el tamaño de la pantalla porque es esencialmente una gran lista de diferentesdimens.xml
para cadadp
valor posible .Véalo en acción:
Aquí está en tres dispositivos con dimensiones y densidades de pantalla muy diferentes:
Tenga en cuenta que el
sdp
cálculo de la unidad de tamaño incluye algunas aproximaciones debido a algunas limitaciones de rendimiento y usabilidad.fuente
Queremos ver los cambios del tamaño de vista requerido en diferentes pantallas.
Necesitamos crear carpetas de valores diferentes para pantallas diferentes y colocar el archivo dimens.xml en función de las densidades de pantalla.
Tomé un TextView y observé los cambios cuando cambié dimens.xml en diferentes carpetas de valores.
Por favor sigue el proceso
normal - xhdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos lo normal: xhdpi \ dimens.xml
Nexus 5X (5.2 "* 1080 * 1920: 420 ppp)
nexus 6P (5.7 "* 1440 * 2560: 560 ppp)
nexus 6 (6.0 "* 1440 * 2560: 560 ppp)
nexus 5 (5.0 ", 1080 1920: xxhdpi)
Nexus 4 (4.7 ", 768 * 1280: xhdpi)
Galaxy nexus (4.7 ", 720 * 1280: xhdpi)
4.65 "720p (720 * 1280: xhdpi)
4.7 "WXGA (1280 * 720: Xhdpi)
Xlarge - xhdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos Xlarge - xhdpi \ dimens.xml
nexus 9 (8.9 ", 2048 * 1556: xhdpi)
nexus 10 (10.1 ", 2560 * 1600: xhdpi)
grande - xhdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos el tamaño grande: xhdpi \ dimens.xml
nexus 7 (7.0 ", 1200 * 1920: xhdpi)
nexus 7 (2012) (7.0 ", 800 * 1280: tvdpi)
Las siguientes pantallas son visibles en "Buscar teléfonos y tabletas genéricos"
grande - mdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos el tamaño grande: mdpi \ dimens.xml
5.1 "WVGA (480 * 800: mdpi)
5.4 "FWVGA (480 * 854: mdpi)
7.0 "WSVGA (tableta) (1024 * 600: mdpi)
normal - hdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos lo normal - hdpi \ dimens.xml
nexus s (4.0 ", 480 * 800: hdpi)
nexus one (3.7 ", 480 * 800: hdpi)
pequeño - ldpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos las pequeñas: ldpi \ dimens.xml
Control deslizante QVGA de 2.7 "(240 * 320: ldpi)
2.7 "QVGA (240 * 320: ldpi)
xlarge - mdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos xlarge - mdpi \ dimens.xml
10.1 "WXGA (TABLETA) (1280 * 800: MDPI)
normal - ldpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos lo normal: ldpi \ dimens.xml
3.3 "WQVGA (240 * 400: LDPI)
3.4 "WQVGA (240 * 432: LDPI)
normal - hdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos lo normal - hdpi \ dimens.xml
4.0 "WVGA (480 * 800: hdpi)
3.7 "WVGA (480 * 800: hdpi)
Control deslizante FWVGA de 3.7 "(480 * 854: hdpi)
normal - mdpi \ dimens.xml
Los siguientes dispositivos pueden cambiar el tamaño de las pantallas cuando cambiamos lo normal: mdpi \ dimens.xml
Control deslizante HVGA de 3.2 "(ADP1) (320 * 480: MDPI)
3.2 "QVGA (ADP2) (320 * 480: MDPI)
fuente
values-normal-xhdpi
.Hay buenas bibliotecas que manejarán todo y reducirán su dolor. Para usarlo, solo agregue dos dependencias en gradle:
Después de eso, use
dimens
así:fuente
He subido un programa simple de Java que toma la ubicación de su proyecto y el archivo de dimensión que desea como entrada. Basado en eso, generaría el archivo de dimensión correspondiente en la consola. Aquí está el enlace:
https://github.com/akeshwar/Dimens-for-different-screens-in-Android/blob/master/Main.java
Aquí está el código completo para la referencia:
fuente
Debe crear una
values
carpeta diferente para diferentes pantallas y colocar eldimens.xml
archivo de acuerdo con las densidades.fuente
ldpi
,mdpi
formavalues-xxhdpi
para Nexus 6?320x480
Es típico mdpi . Entonces, póngalo dentrovalues
o dentrovalues-mdpi
Se puede poner
dimens.xml
en1) valores
2) valores-hdpi
3) valores-xhdpi
4) valores-xxhdpi
Y proporcione diferentes tamaños en las
dimens.xml
carpetas correspondientes según las densidades.fuente
En caso de que quiera ver más: Aquí hay un enlace para una lista de dispositivos (tabletas, teléfonos, relojes), incluyendo
watch
,chromebook
,windows
ymac
. Aquí puede encontrar la densidad, las dimensiones, etc. Basándome aquí, es un buen recurso si también está usando un emulador.Si hace clic en un elemento específico, mostrará más detalles en el lado derecho.
Ya que es
Android
, voy a publicar relacionados con él.~ Es mejor si guarda una copia de la web. Para verlo sin conexión.
fuente
Android 3.2 presenta un nuevo enfoque para los tamaños de pantalla, los números que describen el tamaño de la pantalla están todos en unidades "dp".
dp de ancho más pequeño: el ancho más pequeño disponible para el diseño de la aplicación en unidades "dp"; Este es el dp de ancho más pequeño que encontrará en cualquier rotación de la pantalla.
Para crear un clic derecho en res >>> nuevo >>> directorio de recursos de Android
Desde la ventana Calificadores disponibles , mueva el Ancho de pantalla más pequeño a Calificadores elegidos
En ancho de pantalla ventana pantalla, simplemente escriba el valor "dp" a partir del cual desea que Android Studio use esas monedas.
Luego, cambie a la vista Proyecto , haga clic derecho en el nuevo directorio de recursos creado
nuevo >>> Archivo de recursos de valores ingrese un nuevo nombre de archivo dimens.xml y listo.
fuente