1 尺寸单位定义
- px(pixel,像素):每个px对应屏幕上的一个点
- dip或dp(device independent pixels,设备独立像素):一种基于屏幕密度的抽象单位。在每英寸160个点的显示器上,1dip = 1px。但随着屏幕密度的改变,dip与px的换算会发生改变,dp是与实际尺寸匹配的单位
- sp(scaled pixels,比例像素):主要处理字体的大小,可根据用户的字体大小首选项 进行缩放
- in(inch,英寸):标准长度单位,1inch = 25.4mm
- pt(point,磅):标准长度单位,1inch = 72pt
2 PPI(Pixel Per Inch,像素密度):每英寸上的像素
- PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
- 一般情况下的普通屏幕的PPI:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
3 屏幕级别
屏幕级别
|
屏幕密度
|
比率(相对)
|
物理大小(英寸)
|
dp
|
像素大小
|
通常的分辨率
|
|
ldpi
|
120
|
3
|
0.75
|
1
|
120/0.75=160
|
120
|
|
mdpi
|
160
|
4
|
1
|
1
|
160/1=160
|
160
|
320*480
|
hdpi
|
240
|
6
|
1.5
|
1
|
240/1.5=160
|
240
|
480*800
|
xhdpi
|
320
|
8
|
2
|
1
|
320/2 = 160
|
320
|
720*1280
|
xxhdpi
|
480
|
12
|
3
|
1
|
483/3 = 160
|
480
|
1080*1800
|
4 android屏幕匹配
- android对应存在drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi等文件夹
- 文件夹所对应的屏幕密度/像素密度比low:medium:high:extra-high:extra-extra-high=3:4:6:8:12
- 尺寸单位dp/sp与屏幕密度对应的单位:1dp*PPI/160 = 实际像素数 sp*ppi/160 = 实际像素 (dp表示图片尺寸,sp表示字体尺寸)
- 按照图片所在文件夹,其显示实际尺寸与该屏幕密度对应,如果错位显示,其实际尺寸不变,但程序中尺寸数值应该与屏幕密度比例关系对应(也就是说,如果我的屏幕是hdpi的,结果我的图片是放到了xhdpi下,那系统会把这张图片进行缩小显示)即:3:4:6:8:12 = a:x:x:x:x
5 获取设备分辨率
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
//获得手机的宽度和高度像素单位为px
Helper.setWidthPixelsHeightPixels(dm.widthPixels, dm.heightPixels);