Android开发中dp、dpi、px的区别

一、基本概念

- dp:安卓中的相对大小

- dpi:(dot per inch)每英寸像素多少

- px:像素点

二、详细说明

1、px和dpi

- px:

平常所说的1920×1080只是像素数量,也就是1920px×1080px,代表手机高度上有1920个像素点,宽度上有1080个像素点。

- dpi:

要想判别手机屏幕的显示好坏,还要考虑屏幕的宽高(英寸),也就是用dpi即每英寸多少像素来评价屏幕的显示效果。(不然假如手机分辨率是1920×1080,但是屏幕是几十寸的,那显示效果将不会很好,甚至你有可能看到小的像素块,那将更影响视觉效果。)

2、dp

(1)、怎样理解dp才好呢?

  • 其实dp就是为了使得开发者设置的长度能够根据不同屏幕(分辨率/尺寸也就是dpi)获得不同的像素(px)数量。比如:我将一个控件设置长度为1dp,那么在160dpi上该控件长度为1px,在240dpi的屏幕上该控件的长度为1*240/160=1.5个像素点。
  • 也就是dp会随着不同屏幕而改变控件长度的像素数量。
  • 关于dp的官方叙述为当屏幕每英寸有160个像素时(也就是160dpi),dp与px等价的。那如果每英寸240个像素呢?1dp—>1*240/160=1.5px,即1dp与1.5px等价了。
  • 其实记住一点,dp最终都要化为像素数量来衡量大小的,因为只有像素数量最直观。

(2)、计算dp的方法

  • 通常来说,我们写程序时几乎没用到计算dp,就是直接凭着自己的感觉写的。此处计算dp只是为了大家更好理解dp,如果有的人想精确设置控件大小,也可以这样计算的。
  • 我直接画张图吧:
    计算dp流程
  • 计算dp往往是由程序员完成的,是创造的过程,顺叙的过程。但是写程序总会有两个历程的,一个是进行写,一个是返回读,这个读的话就用到了将dp转换了。

(3)、dp转px—(最常用的方法)

  • 前面已经看到一个例子了如下(注:等号都是等价,是理解上的等于,不是直接的等于的):安卓中如果手机每英寸有160px,即手机是160dpi,那么此时1dp就可以理解为1px,假如现在手机是240dpi,那么1dp=240/160 px=1.5px,
    从上可以看出dp转px只与屏幕的dpi有关。
  • 对于android 来说,最终我们能读懂或者衡量的都是px,所以最后我们都将dp化为px好理解一点。我总结了dp转px的公式如下:
  • 公式:dp值×(当前dpi/160dpi)=>得出当前的像素数目

(4)、手机屏幕dp最大值是多少?

  • 那么问题来了,一个手机屏幕最大有多大的dp呢,我能不能设置成100000dp呢?其实这也是我所思考的,下面我慢慢来讲。
  • 假如现在将控件宽度设置为160dp,那不同dpi的手机所得到的像素是多少呢?
    宽160dp的像素
    从中可以看出最后所得像素值与dpi值相同,也就是说不管什么屏幕160dp,就相当于1英寸。
  • 所以要得到全屏最长的的dp,就等于160*宽(或者高英寸长)
    如第三个1080*1920例子,160*3=480dp,所以0-480dp就是宽的dp范围。因为480*360/160=1080个像素,正好等于宽的最大像素数量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值