一、分辨率
分辨率就是屏幕上显示的像素个数,分辨率160×128的意思是水平方向含有像素数为160个,垂直方向像素数128个。屏幕尺寸一样的情况下,分辨率越高,显示效果就越精细和细腻。
二、屏幕尺寸
设备的物理屏幕尺寸。所谓屏幕尺寸指的是屏幕对角线的长度,单位是英寸。然而不同的屏幕尺寸是可以采用相同的分辨率的,而它们之间的区别在与密度(density)不同。
三、屏幕密度
屏幕密度与DPI这个概念紧密相连,DPI全拼是dots-per-inch,即每英寸的点数。也就是说,密度越大,每英寸内容纳的点数就越多。( (每英寸所能打印的点数,即打印精度) )
android.util包下有个DisplayMetrics类可以获得密度相关的信息。最重要的是densityDpi这个成员,它有如下几个常用值:
DENSITY_LOW = 120
DENSITY_MEDIUM = 160 //默认值
DENSITY_TV = 213 //TV专用
DENSITY_HIGH = 240
DENSITY_XHIGH = 320
DENSITY_400 = 400
DENSITY_XXHIGH = 480
DENSITY_XXXHIGH = 640
Android主要有以下几种屏:如下表
幕 Tyep | 宽度 Pixels | 高度 Pixels | 尺寸 Range(inches) | 屏幕密度 |
QVGA | 240 | 320 | 2.6-3.0 | low |
WQVGA | 240 | 400 | 3.2-3.5 | low |
FWQVGA | 240 | 432 | 3.5-3.8 | low |
HVGA | 320 | 480 | 3.0-3.5 | Medium |
WVGA | 480 | 800 | 3.3-4.0 | High |
FWVGA | 480 | 854 | 3.5-4.0 | High |
WVGA | 480 | 800 | 4.8-5.5 | Medium |
FWVGA | 480 | 854 | 5.0-5.8 | Medium |
备注 | 目前android默认的low=120 ;Medium =160; High = 240 |
apk的资源包中
当屏幕density=240时,使用hdpi 标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px。
四、px
屏幕上的点,不同设备不同的显示屏显示效果相同,这是绝对像素,是多少就永远是多少不会改变。
五、dip/dp
DIP是Density Independent Pixel,直译为密度无关的像素:设备独立像素.
一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp =1px。
dp与px换算公式:
pixs=dips * (densityDpi/160)
dips=(pixs*160)/densityDpi
针对dip和px 的关系,做以下概述:
QVGA屏density=120 QVGA(240px*320px)
HVGA屏density=160 HVGA(320px*480px)
WVGA屏density=240 WVGA(480px*800px)
WQVGA屏density=120 WQVGA(240px*400px)
density值表示每英寸有多少个显示点,与分辨率是两个概念。
官方推荐使用dp是因为它会根据你设备的密度算出对应的像素。公式为:pixel = dip*density
dp与px转换的方法:
public static int dipToPx(Contextcontext, float dipValue) {
final float scale =context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale+ 0.5f);
}
public static int pxToDip(Contextcontext, float pxValue) {
final float scale =context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale+ 0.5f);
}
六、PPI
Pixels per inch,每英寸的像素数(也被称为图像的采样率)。屏幕X/Y轴上真正的物理PPI。
因此PPI数值越高,即代表显示屏能够以越高的密度显示图像。当然,显示的密度越高,拟真度就越高。
七、sp
scaled pixels — bestfor text size,放大像素,与刻度无关的像素:主要处理字体的大小。
根据google的推荐,像素统一使用dip,字体统一使用sp。