android屏幕适配之度量单位、屏幕分类、图标尺寸归类分析
好久没有做android项目UI的适配了,好多基本概念都已经模糊了,于是萌生了将屏幕分辨率、常用单位、常用图标尺寸等信息规整的想法,一下就是通过查询资料,自己验证的一些随笔,如有失误之处,望大家及时予以指正,我将及时更新改正,有部分内容未添加,有些是不常用,有些是没有相关资料,希望在以后能慢慢补全。
一、常见单位:
1、px(pixels):(像素) 屏幕上可见像素点
2、dip/dp(Density independent pixels): 设备无关像素的长度单位。
3、sp(放大像素):scaled pixels,主要用于字体显示 best for text size (随系统字体大小设置而变化)
4、dpi:(dots per inch )一英寸多少个像素点。常见取值 120,160,240。我一般称作像素密度,简称密度
5、density:密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc)
6、in (英寸):长度单位
7、mm(毫米):长度单位
8、pt:point (磅)一个标准的长度单位,1pt = 1/72英寸,常用于印刷业
二、常见概念:
1、分辨率:横纵2个方向的像素点的数量,如:480*800
2、屏幕尺寸:屏幕对角线长度,多以英寸为单位
3、屏幕比例:确定屏幕对角线长度后,屏幕形状没有确定,有了屏幕比例 4:3、16:9 这种屏幕比例后,就可以计算屏幕长宽
三、计算方法:
dpi = 对角线像素点数(根据分辨率通过勾股定理获取)/屏幕尺寸
density = dpi/160
四、屏幕尺寸与dp对照表:
资源文件夹 |
屏幕尺寸 |
屏幕像素密度(dpi-dots per inch) |
密度(density) |
1dp/dip |
ldpi |
|
120 |
0.75 |
0.75px |
mdpi |
320*480 |
160 |
1.0(160px/inc) |
1px |
hdpi |
480*800 |
240 |
1.5 |
1.5px |
xhdpi |
1280*720 |
320 |
2.0 |
2px |
xxhdpi |
1920*1080 |
480 |
3.0 |
3px |
五、activity中获取相关参数方式:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
六、常用图标尺寸设计规范:
|
|
ldpi |
mdpi |
hdpi |
xhdpi |
xxhdpi |
应用启动图标 |
|
36 x 36 px |
48 x 48 px |
72 x 72 px |
96 x 96 px |
144 x 144 px |
底部菜单图标 |
完整图片 |
36 x 36 px |
48 x 48 px |
72 x 72 px |
|
|
图标 |
24 x 24 px |
32 x 32 px |
48 x 48 px |
|
|
|
图标外边框 |
22 x 22 px |
30 x 30 px |
44 x 44 px |
|
|
|
弹出对话框顶部图标 |
|
24 x 24 px |
32 x 32 px |
48 x 48 px |
|
|
长列表内部列表项图标 |
|
24 x 24 px |
32 x 32 px |
48 x 48 px |
|
|
底部或顶部tab标签图标 |
完整图片 |
24 x 24 px |
32 x 32 px |
48 x 48 px |
|
|
图标 |
22 x 22 px |
28 x 28 px |
42 x 42 px |
|
|
|
底部状态栏图标 |
|
18 x 18 px |
24 x 24 px |
36 x 36 px |
48 x 48 px |
|