Adaptación de la pantalla de desarrollo de Android

Como todos sabemos, los modelos de Android tienen varios tamaños, por lo que la adaptación de la pantalla se ha convertido en una parte muy importante del desarrollo de Android. Algunos desarrolladores pueden encontrar la adaptación de la pantalla de Android. Compartamos la adaptación de la pantalla hoy. Verá que la adaptación de la pantalla de Android también puede ser muy simple.

conceptos básicos

Algunos conceptos que deben entenderse en la adaptación de la pantalla de Android pueden resultar aburridos, pero como dice el refrán, "el que quiere ser bueno en el trabajo primero debe ser un arma afilada", que se traduce en "qué tipo de arma tienes determina qué tipo de arma tienes "Bird", una vez que comprenda estos conceptos, la adaptación a la pantalla se sentirá naturalmente más fácil para usted.

  • px

Es una abreviatura de la palabra inglesa pixel, que significa pixel, un punto en la pantalla. Lo que solemos llamar resolución como 480X800 se refiere a píxeles.

En el campo del diseño, los píxeles son la unidad más pequeña utilizada para calcular imágenes digitales. La imagen que se muestra en la computadora no está compuesta por líneas continuas, sino por muchos puntos pequeños que son invisibles a simple vista. Si amplía la imagen varias veces, encontrará que estos tonos continuos en realidad están compuestos por muchos puntos pequeños con colores similares Estos pequeños puntos son la unidad más pequeña de "píxeles" que constituyen la imagen. Como es la unidad de visualización independiente más pequeña, px es un número entero, por lo que no aparecerá 0.5px. Como:

Mira esta colorida luz LED (tamaño original)

¿Te imaginas que este es su verdadero color? (Después de hacer zoom)

  • en

Representa pulgadas, que es el tamaño físico de la pantalla. Cada pulgada equivale a 2,54 centímetros. Por ejemplo, los tamaños de pantalla de los teléfonos móviles de los que hablamos a menudo son 5 pulgadas (inglés) y 4 pulgadas (inglés) se refieren a esta unidad. Estas dimensiones son la longitud diagonal de la pantalla. Si la pantalla del teléfono móvil es de 4 pulgadas, significa que la longitud diagonal de la pantalla (área visible) del teléfono móvil es de 4 X 2,54 = 10,16 cm.

  • dpi

ppp es la abreviatura de Puntos por pulgada, puntos por pulgada, es decir, el número de píxeles por pulgada. Por ejemplo, un teléfono móvil con una resolución de 320 x 480 tiene 2 pulgadas de ancho y 3 pulgadas de alto. La cantidad de píxeles contenidos en cada pulgada es 320/2 = 160 ppp (horizontal) o 480/3 = 160 ppp (vertical). 160 son los ppp de este teléfono móvil. Los valores horizontal y vertical son los mismos, porque la mayoría de las pantallas de los teléfonos móviles utilizan píxeles cuadrados.

  • densidad

Densidad de pantalla, la relación entre densidad y ppp es densidad = ppp / 160

  • dp

Es decir, dip, la abreviatura de píxeles independientes del dispositivo, píxeles independientes del dispositivo, una unidad exclusiva de Android, en una pantalla con una densidad de pantalla de ppp = 160, 1dp = 1px.

  • sp

Similar a dp, generalmente se usa para establecer el tamaño de fuente, la diferencia con dp es que se puede escalar de acuerdo con la preferencia de tamaño de fuente del usuario.

Android dibujable

Después de crear un nuevo proyecto de Android, deberíamos poder ver muchas carpetas dibujables, correspondientes a diferentes dpi

  • drawable-ldpi (dpi = 120, densidad = 0,75)

  • drawable-mdpi (dpi = 160, densidad = 1)

  • drawable-hdpi (dpi = 240, densidad = 1,5)

  • drawable-xhdpi (dpi = 320, densidad = 2)

  • drawable-xxhdpi (dpi = 480, densidad = 3)

La mayoría de los tutoriales de Android en el mercado enseñan un conjunto de recursos de imagen para cada ppp. Esta es sin duda una solución, pero también es un método muy estúpido, que agrega mucho al arte o al diseño. Sin mencionar la carga de trabajo, también hará que su paquete apk sea muy grande. Entonces, ¿hay alguna buena manera de garantizar la adaptación de la pantalla mientras se minimizan los recursos de diseño y, al mismo tiempo, es mejor usar solo un conjunto de recursos de imagen de ppp? Expliquemos el método resumido en el próximo proyecto.

En primer lugar, debes tener claro el concepto de renderizado automático. El SDK de Android seleccionará automáticamente el archivo de recursos correspondiente para el tamaño de pantalla para renderizar. Si el SDK detecta que el ppp de tu teléfono es 160, primero irá a la carpeta drawable-mdpi para encontrar los recursos de imagen correspondientes. Ten en cuenta que solo Primero, suponga que el ppp de su teléfono es 160, pero solo tiene los archivos de recursos de imagen correspondientes en la carpeta xhpdi, y el programa puede ejecutarse normalmente. Entonces, teóricamente hablando, está bien proporcionar solo un recurso de imagen de una especificación. Si solo se proporcionan imágenes de la especificación ldpi, no estará claro si la imagen está ampliada para un teléfono móvil con gran resolución, por lo que es necesario proporcionar un conjunto del máximo que necesita imagen de dpi, de modo que incluso si el teléfono móvil del usuario tiene una resolución pequeña, la imagen sigue siendo muy clara cuando se reduce.

xhdpi se convierte en la primera opción

上面说了只需要提供一套大的dpi的图片就ok了,现在市面手机分辨率最大可达到1080X1920的分辨率,如Nexus5,dpi属于xxhdpi,但是毕竟还没普及,目前市面上最普遍的高端机的分辨率还多集中在720X1080范围,也就是多集中在xhdpi,所以目前来看xhpdi规格的图片成为了首选。当然随着技术规格的提高以后发展,以后可能市场上xxdpi的手机会越来越普遍,但这是后话。

设计资源紧张怎么办?

在现在的App开发中,基本都会有iOS和Android版本,有些公司为了保持App不同版本的体验交互一致,还有些公司的设计资源可能比较紧张,这些情况下iOS和Android版本基本是一个设计师主导,而大多数情况下设计师可能更会以iPhone手机为基础进行设计,包括后期的切图之类的。这个时候身为Android开发人员你是否还要求设计师单独为Android端切一套图片资源呢?这会让你们的设计师崩溃的,下面就来告诉一个项目中总结的更棒的方法。

相信设计师们一般都会用最新的iPhone5(5s和5的尺寸以及分辨率都一样)来做原型设计,而iPhone5的屏幕分辨率为640X1164, 屏幕尺寸为4英寸,根据勾股定理(a^2 + b^2 = c^2)640^2+1164^2=1764496, 然后再对其开根号可求出屏幕对角线的分辨率为:1328,除以4可得出iphone5的dpi:1328/4≈332 可以看出iPhone5的屏幕的dpi约等于320, 刚好属于xhdpi,所以你可以很自豪的像你们的设计师说不用专门为Android端切图,直接把iPhone的那一套切好的图片资源放入drawable-xhdpi文件夹里就ok了。

wrap_content VS dp

wrap_content和dp都是在Android开发中应该经常用到的,然后它们冥冥中是有关系的。

假设你看了这篇文章后都是统一有xhdpi的资源,那么你用wrap_content完全没有问题,Android会自动为其他规格的dpi屏幕适配,比如你在xhdpi放了一张120X120px大小的图片,那么在在hdpi屏幕上显示的就只有120/2*1.5=90px大小,但是如果你不小心同样把这张图片也放入了mdpi了,这个时候用wrap_content显示就会有问题,具体看下面的例子:

例如假设你只在drawable_xhdpi文件夹下放了test图片,xhdpi的设备会去xhdpi文件夹下找到test图片并直接显示,而mdpi的设备优先会去mdpi文件夹里查找test图片,但是没找到,最后在xhdpi文件夹下找到,然后会自动根据density计算并缩放显示出来,实际显示出来的大小是120/2=60px, 所以整体的显示比例才会看起来比较正常

  • mdpi

  • xhdpi

但是如果你在mdpi文件夹里也放入了同样的图片,那么mdpi的设备会直接去mdpi文件夹里寻找到test图片,并直接显示,而这时候显示不会缩放,实际显示大小就是120X120,在mdpi的屏幕上看起来就会比较大,如图:

通过上面整个过程,大家应该理解了Android加载资源的整个过程, wrap_content同样可以用dp来代替,就拿上面这个例子,在xhdpi文件夹内放入了一张120X120像素的test图片,宽高直接除density就得出dp的数值,即这种情况下以下代码是等同的.

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/test" />
<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:src="@drawable/test" />

总结

相信通过以上的讲解,对Android UI中的一些基本概念有个很好的理解,实际开发工作中也有一些高效的方法可以参考,应该可以应对大部分的屏幕适配工作。但是项目中仍然有一些比较特殊的适配需求满足不了,以后会针对一些特殊的需求进行示例讲解。

Supongo que te gusta

Origin blog.csdn.net/xhf_123/article/details/49931547
Recomendado
Clasificación