形象讲解Android中dpi,dp和px之间的关系(设计师如何与程序员沟通)
2016-01-13 23:21
537 查看
屏幕尺寸指屏幕(显示屏)对角线的长度,单位为英寸。dpi(dots
per inch 像素密度)指每英寸中的像素数.
(1)在android中,160dpi设备下,1px = 1dp,160dpi表示一英寸中包含160个像素点(px),即把一英寸平均分成160个单元格,每个单元格就有一个像素。如果我们把这160个单元格的单位设为dp,则1dp=1px;
(2)假设我的设备的分辨率为1080*1920,尺寸为5英寸,则我的设备的像素密度为
,即一英寸中包含440个像素点(px),如果把一英寸平均分成160个单元格,则每个单元格有440/160
= 2.75个像素。如果我们把这160个单元格的单位设为dp,即1dp = 2.75px;
(3)因为把一英寸分为160个单元格,所以无论在160dpi或者440dpi下,一个单元格的长度都为1/160英寸,即1dp都为1/160英寸。所以,当我们用dp作为长度单位时,相同dp值下,在任何设备上肉眼看到的都是相同的长度。即在440dpi或者160dpi设备下,160dp都为一英寸.
(4)从(2)中,“每个单元格有440/160 = 2.75个像素”,我们可以得到换算公式,1像素 = 1单元*(440/160),即px = dp*(dpi/160);
android中获取dpi:
下图例子是设计图中的一部分,数字的单位为px:
per inch 像素密度)指每英寸中的像素数.
(1)在android中,160dpi设备下,1px = 1dp,160dpi表示一英寸中包含160个像素点(px),即把一英寸平均分成160个单元格,每个单元格就有一个像素。如果我们把这160个单元格的单位设为dp,则1dp=1px;
(2)假设我的设备的分辨率为1080*1920,尺寸为5英寸,则我的设备的像素密度为
,即一英寸中包含440个像素点(px),如果把一英寸平均分成160个单元格,则每个单元格有440/160
= 2.75个像素。如果我们把这160个单元格的单位设为dp,即1dp = 2.75px;
(3)因为把一英寸分为160个单元格,所以无论在160dpi或者440dpi下,一个单元格的长度都为1/160英寸,即1dp都为1/160英寸。所以,当我们用dp作为长度单位时,相同dp值下,在任何设备上肉眼看到的都是相同的长度。即在440dpi或者160dpi设备下,160dp都为一英寸.
(4)从(2)中,“每个单元格有440/160 = 2.75个像素”,我们可以得到换算公式,1像素 = 1单元*(440/160),即px = dp*(dpi/160);
android中获取dpi:
DisplayMetrics dm = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(dm); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; // dpi densityDpi = dm.densityDpi; // dm.density = dpi/160; density = dm.density;
ps: 设计师如何与程序员沟通?
设计师会说明设计稿的UI是按照某种分辨率的和屏幕尺寸的手机来设计,如设计师会说明“该ui的分辨率为1080*1920,5英寸“,根据换算公式得到像素密度为440dpi , 1dp = 440/160 = 2.75px。所以程序员在实现UI时,如果布局文件是以dp为单位,则把设计图上标注的像素尺寸除以3(2.75约为3)即可。即如果设计图上某个组件标出的宽度为300px,那么我们在布局时设置宽度为300px/3=100dp。下图例子是设计图中的一部分,数字的单位为px:
相关文章推荐
- 了解的程序员越多,我越觉得程序员是一群有趣的人
- 程序员保值的4个秘密
- 面试题53:把字符串转换为整数
- 12本最具影响力的程序员书籍_书籍书评_酷勤网
- 局部变量引起歧义的面试题
- 总结这几天面试
- 面试题52:不能被继承的类
- 面试题51:不用加减乘除做加法
- java工程师面试题积累中...
- android面试所涉及的范围及学习方向
- 面试题12:打印1到最大的n位数
- 黑马程序员@之API的故事
- 黑马程序员@面向对象之修饰符和内部类(难点)
- 黑马程序员@面向对象之多态和接口
- 黑马程序员@java面向对象之继承
- 黑马程序员@java基础中重点之面向对象
- iT大牛高老师免费收徒
- 迎接2016,一个程序员的总结
- 面试题50:求1+2+...+n
- it大牛高洛峰收徒