形象讲解Android中dpi,dp和px之间的关系(设计师如何与程序员沟通)

本文介绍了Android中dpi、dp和px的关系,强调了在不同像素密度设备上,dp能确保视觉一致性。通过实例解释了如何从设计图的像素尺寸转换为dp,帮助设计师与程序员更好地沟通。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

屏幕尺寸指屏幕(显示屏)对角线的长度,单位为英寸。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:

  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:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值