PS:一部分一部分来,先介绍基本概念,明天继续补充~
定义
使得某一元素在Android不同的尺寸、不同分辨率的手机上面具备相同的显示效果。
相关重要概念
屏幕尺寸
含义:手机对角线的物理尺寸
-
单位:英寸(inch),1英寸 = 2.54cm
Android手机目前主流的屏幕尺寸为5寸,5.5寸,6寸等
屏幕分辨率
-
含义:手机在横向纵向上像素点数的总和
一般 描述成屏幕的 「宽 * 高」,即「横向方向像素点 * 纵向方向像素点」。
-
单位:px(pixel),1px = 1像素点
- UI设计师的设计图一般会以px作为统一计量单位
- Android手机目前主流的屏幕分辨率为:320 * 480 、480 * 800、720 * 1280,1080 * 10920等
屏幕像素密度
含义:每英寸的像素点数
单位:dpi(dots per ich)
密度类型 | 「代表」的分辨率(px) | 屏幕像素密度(dpi) |
---|---|---|
低密度(ldpi) | 240 * 320 | 120 |
中密度(mdpi) | 320 * 480 | 160 |
高密度(hdpi) | 480 * 800 | 240 |
超高密度(xhdpi) | 720 * 1280 | 320 |
超超高密度(xxhdpi) | 1080 * 1920 | 480 |
- Android手机对每类手机屏幕大小都有一个相应的屏幕像素密度
屏幕尺寸、屏幕分辨率、屏幕像素密度三者之间的关系
一部手机的屏幕分辨率是宽x高,屏幕大小是以英寸为单位,三者有以下关系:
密度(单位/dpi) =举个栗子:
直接套公式之后:2203px/5in = 440dpi. 即此款手机的屏幕像素密度为:440dpi
密度无关像素
含义:density-independent pixel,叫dp或dip,与终端上的实际物理像素点无关
-
单位:dp,可以保证在不同屏幕像素密度的设备上显示相同的效果
Android开发时一般使用dp而不是px设置元素的大小。dp是Android特有的单位
-
dp与px的转换
因为UI设计图一般都以px为单位,Android开发一般都以dp为单位,所以学会转换是非常必要的
密度类型 | 「代表」的分辨率(px) | 屏幕像素密度(dpi) | 换算(px/dp) | 比例 |
---|---|---|---|---|
低密度(ldpi) | 240 * 320 | 120 | 1dp=0.75px | 3 |
中密度(mdpi) | 320 * 480 | 160 | 1dp=1px | 4 |
高密度(hdpi) | 480 * 800 | 240 | 1dp=1.25px | 6 |
超高密度(xhdpi) | 720 * 1280 | 320 | 1dp=2px | 8 |
超超高密度(xxhdpi) | 1080 * 1920 | 480 | 1dp=3px | 12 |
在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px
举个栗子:
假如同样都是画一条长度是屏幕一半的线,如果使用px作为计量单位,那么在480x800分辨率手机上设置应为240px,在320x480的手机上应设置为160px,二者就需要分别设置了。
但是如果使用dp为单位,160dp在480x800分辨率手机上显示长度为:160x1.25=200px;在320x480分辨率的手机上显示长度为:160x1=160px;均显示为屏幕宽度的一半,不需要额外去设置了~
独立比例像素
含义:scale-independent pixel,叫sp或sip
-
单位:sp
- Android开发时用此单位设置文字大小,可根据字体大小首选项进行缩放
- 推荐使用12sp、14sp、18sp、22sp作为字体设置的大小,不推荐使用奇数和小数,容易造成精度的丢失问题;小于12sp的字体会太小导致用户看不清