values studio example dimens dimen crear carpeta android android-layout android-activity android-screen-support

studio - ¿Cómo definir dimens.xml para cada tamaño de pantalla diferente en Android?



dimension android xml (9)

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 archivos diferentes dimens.xml como se sugiere en las respuestas anteriores, no es fácil de administrar.

Cómo utilizar:

Para usar sdp :

  1. Incluya la implementation ''com.intuit.sdp:sdp-android:1.0.5'' en su build.gradle ,
  2. Reemplace cualquier valor dp como 50dp con un @dimen/50_sdp así:

    <TextView android:layout_width="@dimen/_50sdp" android:layout_height="@dimen/_50sdp" android:text="Hello World!" />

Cómo funciona:

sdp escala con el tamaño de la pantalla porque es esencialmente una gran lista de diferentes dimens.xml para cada valor de dp posible.

Véalo en acción:

Aquí está en tres dispositivos con dimensiones y densidades de pantalla muy diferentes:

Tenga en cuenta que el cálculo de la unidad de tamaño de sdp incluye algunas aproximaciones debido a algunas limitaciones de rendimiento y usabilidad.

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 this 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).


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 de calificadores disponibles , mueva el ancho de pantalla más pequeño a los calificadores elegidos

En la ventana Ancho de pantalla, simplemente escriba el valor "dp" a partir del cual desea que Android Studio use esas monedas.

Luego de cambiar a la vista Proyecto , haga clic derecho en su nuevo directorio de recursos creado

nuevo >>> Archivo de recursos de valores ingrese un nuevo nombre de archivo dimens.xml y listo.


Debe crear una carpeta de diferentes valores para diferentes pantallas . Me gusta

values-sw720dp 10.1” tablet 1280x800 mdpi values-sw600dp 7.0” tablet 1024x600 mdpi values-sw480dp 5.4” 480x854 mdpi values-sw480dp 5.1” 480x800 mdpi values-xxhdpi 5.5" 1080x1920 xxhdpi values-xxxhdpi 5.5" 1440x2560 xxxhdpi values-xhdpi 4.7” 1280x720 xhdpi values-xhdpi 4.65” 720x1280 xhdpi values-hdpi 4.0” 480x800 hdpi values-hdpi 3.7” 480x854 hdpi values-mdpi 3.2” 320x480 mdpi values-ldpi 3.4” 240x432 ldpi values-ldpi 3.3” 240x400 ldpi values-ldpi 2.7” 240x320 ldpi

Para más información puede visitar aquí.

Carpetas de diferentes valores en Android

http://android-developers.blogspot.in/2011/07/new-tools-for-managing-screen-sizes.html

Editado por @humblerookie

Puede utilizar el complemento de Android Studio llamado Dimenify para generar automáticamente valores de dimensión para otros Dimenify 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.


En caso de que quiera ver más: aquí hay un link para una lista de dispositivos (tableta, móvil, relojes), incluidos watch , chromebook , windows y mac . Aquí puede encontrar la densidad, las dimensiones, etc. Basándome aquí, es un buen recurso si también usa un emulador.

Si hace clic en un elemento específico, mostrará más detalles en el lado derecho.

Como es Android , publicaré algo relacionado.

~ Es mejor si guarda una copia de la web. Para verlo sin conexión.


Hay buenas bibliotecas que manejarán todo y reducirán su dolor. Para usarlo, solo agregue dos dependencias en gradle:

implementation ''com.intuit.ssp:ssp-android:1.0.5'' implementation ''com.intuit.sdp:sdp-android:1.0.5''

Después de eso, use dimens como este:

android:layout_marginTop="@dimen/_80sdp"


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:

public class Main { /** * You can change your factors here. The current factors are in accordance with the official documentation. */ private static final double LDPI_FACTOR = 0.375; private static final double MDPI_FACTOR = 0.5; private static final double HDPI_FACTOR = 0.75; private static final double XHDPI_FACTOR = 1.0; private static final double XXHDPI_FACTOR = 1.5; private static final double XXXHDPI_FACTOR = 2.0; private static double factor; public static void main(String[] args) throws IOException { Scanner in = new Scanner(System.in); System.out.println("Enter the location of the project/module"); String projectPath = in.nextLine(); System.out.println("Which of the following dimension file do you want?/n1. ldpi /n2. mdpi /n3. hdpi /n4. xhdpi /n5. xxhdpi /n6. xxxhdpi"); int dimenType = in.nextInt(); switch (dimenType) { case 1: factor = LDPI_FACTOR; break; case 2: factor = MDPI_FACTOR; break; case 3: factor = HDPI_FACTOR; break; case 4: factor = XHDPI_FACTOR; break; case 5: factor = XXHDPI_FACTOR; break; case 6: factor = XXXHDPI_FACTOR; break; default: factor = 1.0; } //full path = "/home/akeshwar/android-sat-bothIncluded-notintegrated/code/tpr-5-5-9/princetonReview/src/main/res/values/dimens.xml" //location of the project or module = "/home/akeshwar/android-sat-bothIncluded-notintegrated/code/tpr-5-5-9/princetonReview/" /** * In case there is some I/O exception with the file, you can directly copy-paste the full path to the file here: */ String fullPath = projectPath + "/src/main/res/values/dimens.xml"; FileInputStream fstream = new FileInputStream(fullPath); BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); String strLine; while ((strLine = br.readLine()) != null) { modifyLine(strLine); } br.close(); } private static void modifyLine(String line) { /** * Well, this is how I''m detecting if the line has some dimension value or not. */ if(line.contains("p</")) { int endIndex = line.indexOf("p</"); //since indexOf returns the first instance of the occurring string. And, the actual dimension would follow after the first ">" in the screen int begIndex = line.indexOf(">"); String prefix = line.substring(0, begIndex+1); String root = line.substring(begIndex+1, endIndex-1); String suffix = line.substring(endIndex-1,line.length()); /** * Now, we have the root. We can use it to create different dimensions. Root is simply the dimension number. */ double dimens = Double.parseDouble(root); dimens = dimens*factor*1000; dimens = (double)((int)dimens); dimens = dimens/1000; root = dimens + ""; System.out.println(prefix + " " + root + " " + suffix ); } System.out.println(line); } }


Puedes poner dimens.xml en

1) valores

2) valores-hdpi

3) valores-xhdpi

4) valores-xxhdpi

Y proporcione diferentes tamaños en dimens.xml dentro de las carpetas correspondientes según las densidades.


Queremos ver los cambios del tamaño de vista requerido en diferentes pantallas.

Necesitamos crear carpetas de valores diferentes para diferentes pantallas 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 pantallas a continuación 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)


dimens.xml crear una carpeta de values diferentes para diferentes pantallas y colocar el archivo dimens.xml según las densidades.

1) values 2) values-hdpi (320x480 ,480x800) 3) values-large-hdpi (600x1024) 4) values-xlarge (720x1280 ,768x1280 ,800x1280 ,Nexus7 ,Nexus10) 5) values-sw480dp (5.1'' WVGA screen) 6) values-xhdpi (Nexus4 , Galaxy Nexus)