Android UI设计换算关系一览表

本文介绍Android开发和UI设计中不同屏幕尺寸对应的px和dp之间的换算关系。对于Android开发而言,拿到设计师的UI设计图后,根据设计时的屏幕尺寸及标注信息,根据此表能准确得道换算关系,正确的将切图放置到Android工程中的资源文件夹.

对照表

资源文件 ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi
原始密度PPI 120 160 240 320 480 640
density 0.75 1 1.5 2 3 4
屏幕尺寸 480*800 720*1280 1080*1920 2160*3840
备注 HD高清 FHD全高清 UHD全高清
dp 1 1 1 1 1 1
px 0.75 1 1.5 2 3 4

参考链接

常用尺寸

  • 所有可操作元素最小点击区域尺寸48dp*48dp,图表大小则为18*18dp
  • 顶部状态栏高度:24dp
  • AppBar最小高度:56dp
  • 低步导航栏高度:48dp
  • 悬浮按钮尺寸:56dp*56dp / 40*40dp
  • 用户头像:64*64dp / 40*40dp
  • 小图标点击区域:48*48
  • 侧边抽屉到屏幕右边距离:56dp
  • 卡片间距:8dp
  • 分割线上下留白:8dp
  • 大多元素的留白距离:16dp
  • 屏幕左右对齐基线:16dp
  • 文字左侧对齐基线:72dp

    UI尺寸工具类DisplayUtil.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class DisplayUtil {
private static final String TAG = Class.class.getName();
private static int mScreenWidth = -1;
private static int mScreenHeight = -1;
private static float mDensity = -1;
/**
* 获取屏幕宽度
* @param context
* @return
*/
public static int getScreenWidth(Context context){
if(mScreenWidth < 0){
init(context);
}
return mScreenWidth;
}
/**
* 获取屏幕高度
* @param context
* @return
*/
public static int getScreenHeight(Context context){
if(mScreenHeight < 0){
init(context);
}
return mScreenHeight;
}
public static float getDensity(Context context){
if(mDensity < 0){
init(context);
}
return mDensity;
}
private static void init(Context context){
DisplayMetrics dm =context.getResources().getDisplayMetrics();
mScreenWidth = dm.widthPixels;
mScreenHeight = dm.heightPixels;
mDensity = dm.density;
}
/**
* dip转px
* @param context
* @param dipValue
* @return
*/
public static int dip2px(Context context, float dipValue){
if(mDensity < 0){
init(context);
}
return (int)(dipValue * mDensity + 0.5f);
}
/**
* px转dip
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue){
if(mDensity < 0){
init(context);
}
return (int)(pxValue / mDensity + 0.5f);
}
}
显示 Gitment 评论