关于Android的屏幕适配,推荐大神的文章:Android 屏幕适配:最全面的解决方案:
基本概念:
1.dpi:dots per inch,一英寸的像素数量,这个值是设备自己决定的,是写死的。 比如320X480分辨率的手机,宽2英寸,高3英寸, 每英寸包含的像素点的数量为320/2=160dpi(横向)或480/3=160dpi(纵向),160就是这部手机的dpi,横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。
Google定义的规格如下:
| | 英寸有多少个点儿? | 密度(density) | 代表的分辨率(px)
| -------- | -----: | :----: |
| lhdpi | 120dpi | 0.75 | 240x320
| mhdpi | 160dpi | 1 | 320x480
| hdpi | 240dpi | 1.5 | 480x800
| xhdpi | 320dpi | 2 | 720x1280
| xxhdpi | 480dpi | 3 | 1080x1920
2.density
屏幕密度,density和dpi的关系为 density = dpi/160
3、dp
也即dip,设备独立像素,device independent pixels的缩写,Android特有的单位,在屏幕密度dpi = 160屏幕上,1dp = 1px。
4、sp
和dp很类似,一般用来设置字体大小,和dp的区别是它可以根据用户的字体大小偏好来缩放。
5、屏幕尺寸
屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米
比如常见的屏幕尺寸有4.2、5.0、5.5、6.0等
6、屏幕分辨率
屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素 X 横向像素,如1960*1080。
例子:1080x1920,即宽度方向上有1080个像素点,在高度方向上有1920个像素点
7、px(pixel),1px=1像素点
UI设计师的设计图会以px作为统一的计量单位
在设计图标时,对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 2:3:4:6:8 的比例进行缩放。例如,一个启动图标的尺寸为48x48 dp,这表示在 MDPI 的屏幕上其实际尺寸应为 48x48 px,在 HDPI 的屏幕上其实际大小是 MDPI 的 1.5 倍 (72x72 px),在 XDPI 的屏幕上其实际大小是 MDPI 的 2 倍 (96x96 px),依此类推。
下图为图标的各个屏幕密度的对应尺寸:
Paste_Image.pngAndroid手机常见的分辨率:320x480、480x800、720x1280、1080x1920
Dpi一般需要通过代码或者 shell wm density进行查看,手机中如何查看呢?在设置里面,打开设置开发者选项,找到手机最小宽度,单位是dp,屏幕宽度(px)/最小宽度(dp)*160 = dpi的值。
ppi一般在手机参数中可以查到。
开发的时候用的是dpi,不用ppi。ppi和dpi没有半毛钱关系。目前主流手机的dpi差不多都是400-500之间。也就是xxhdpi放置一套切图足够用,个别需要xxxhdpi。
我有两部手机:
小米Mix2: 分辨率:2160*1080 屏幕尺寸:5.99寸
屏幕dpi:440dpi,403ppi,每英寸像素点数:2.75dpi,屏幕宽度:1080 px,屏幕高度:2030 px,真实高度:2160px,真实宽度:1080px
华为meta10:分辨率:2560*1440 5.9英寸
屏幕Dpi:640dpi,497ppi,每英寸像素点数:4.0dpi,屏幕宽度:1440px,
屏幕高度:2560px,真实高度:2560px, 真实宽度:1440px
最新的几款手机:华为P40 pro: 440ppi
当一个apk运行起来时,Android系统会根据其所运行的手机的屏幕密度去相对应的图片文件夹里找指定名称的图片。 注意, 先去哪个目录里找,完全是根据这个手机的屏幕密度决定的。
比如小米mix2到xxhdpi里面去找图片。华为meta10到xxxhdpi里面去找图片。
网友评论