重要概念
- 屏幕尺寸
屏幕尺寸指屏幕的对角线的长度,单位是英寸(inch),1英寸=2.54厘米
- 例如我们经常说的手机屏幕大小有,5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是4英寸,表示手机的屏幕(可视区域)对角线长度是4 X 2.54 = 10.16厘米。
- 屏幕分辨率
屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以 纵向像素*横向像素,如1960*1080。 - 屏幕像素密度
屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。 - px、dpi、density、dp、dip、sp
px : 大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位,像是获取屏幕宽高等。
–>px = dp * (dpi / 160) = dp*density
dpi : 屏幕像素密度,
–>dpi = /屏幕对角线英寸数
–>dpi = device-common.mk文件中定义的”ro.sf.lcd_density”属性值,若该属性不存在,则默认160。
density :屏幕密度,
–>density = dpi/160
dip/dp : Density Independent Pixels的缩写,即密度无关像素。
–>dp = px/(dpi/160) = px/density
sp : scale-independent pixels,可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。
划分标准
名称 | 像素密度范围(dpi) | 屏幕密度 | 图片icon尺寸(px) |
---|---|---|---|
drawable-ldpi | 120-160 | density=0.75 | 36*36 |
drawable-mdpi | 160-240 | density=1(baseline) | 48*48 |
drawable-hdpi | 240-320 | density=1.5 | 72*72 |
drawable-xhdpi | 320-480 | density=2 | 96*96 |
drawable-xxhdpi | 480-640 | density=3 | 144*144 |
drawable-xxxhdpi | 640-800 | density=4 | 192*192 |
小规律:比值(各种屏幕密度的比值)
ldpi:mdpi:hdpi:xhdpi:xxhdpi:xxxdpi = 0.75:1:1.5:2:3:4 = 3:4:6:8:12:16,
这个比值乘以12就得到对应屏幕密度手机桌面icon图标大小
解决方案
支持各种屏幕尺寸
- 使用wrap_content、match_parent、weight
- 使用相对布局,禁用绝对布局
- 使用限定符
- 尺寸限定符
res/layout/main.xml,单面板(默认)布局
res/layout-large/main.xml,双面板布局,在较大屏幕下会选则此布局,例如 7 英寸或更大的平板电脑
res/layout-sw600dp/main.xml,双面板布局,对于最小宽度大于等于 600 dp 的设备,系统会选择 layout-sw600dp/main.xml(双面板)布局,否则系统就会选择 layout/main.xml(单面板)布局。 - 使用布局别名
- 使用屏幕方向限定符
- 尺寸限定符
- 使用自动拉伸位图
- .9.png 位图的使用