Acerca de dp, dpi, px de adaptación de pantalla
1. La relación entre las carpetas de recursos
En el desarrollo de Android, la interfaz de usuario generalmente produce una variedad de materiales de imágenes, que se colocan en las siguientes carpetas de acuerdo con la resolución de los materiales. Medio:
ldpi (120 ppp)
mdpi (160 ppp)
hdpi (240 ppp)
xdpi (320 ppp)
xxdpi (480 ppp)
xxxdpi (640 ppp)
Basado en mdpi (160 ppp)
Se puede observar que la relación proporcional del coeficiente es: 0,75 :1: 1.5: 2: 3: 4
2. Resolución de teléfono Android convencional y cálculo de ppp y densidad
Consulte el dispositivo simulador que viene con Android Studio:
p>Cálculo de ppp y densidad de las pantallas de teléfonos móviles:
Tome Nexus5X como ejemplo:
Densidad: 420/160=2.625
3. Cargar archivos de recursos
Obviamente, 420 ppp no pertenece a ninguna de las categorías de archivos anteriores. Las resoluciones de los teléfonos Android son muy extrañas. Por lo tanto, la carpeta anterior no especifica una resolución específica, sino un rango. como ldpi (valor <120 ppp), mdpi (120 ppp Verifíquelo: Hay dos imágenes aquí Coloque 171×171 en xxdpi y 64×64 en xdpi. Utilice Nexus5X para probar. ¿En qué carpeta debería cargar los recursos? El resultado es como se muestra en la figura: ¿En qué carpeta está cargada la imagen? ¿Es 171 o 64? Yo tampoco lo sé. Luego lo cambiaré y pondré 171 × 171 en xdpi y 64 × 64 en xxdpi. Si la imagen se vuelve más pequeña, demuestra que la imagen en la carpeta xxdpi debe cargarse. El resultado es como se muestra en la figura: 4. Fórmula de conversión Conversión entre dp y px: dp=px *densidad En el proceso de desarrollo real, la fórmula de conversión comúnmente utilizada es: Tomando dp2px como ejemplo, aquí hay un pequeño detalle De acuerdo con la derivación anterior, el resultado de. El retorno debe ser (int) (valores * densidad), y el resultado antes de la conversión forzada será +0.5f. La razón es que el proceso de conversión fuerte de punto flotante a entero elimina directamente la parte decimal es +0.5f. equivalente al proceso de redondeo (la parte decimal es mayor que +0,5f de 0,5 (se agregará más adelante), el resultado parecerá más preciso.