android鼠标dpi,对Android 中 px、DPI、dp(dip)、density的理解

1:px

像素。一般说一个手机的分辨率为1280*720,意思就是宽度为720像素,高度为1280像素。

但是,安卓的适配不能用这种方式。

比如一个840*360的屏幕和一个1280*720的屏幕,我做了一个180px宽的布局,那么在第一个屏幕上就占据一半的宽度,在第二个屏幕上会只占据1/4的宽度。这样无法达到适配要求。

2:DPI

既然px不能作为适配的单位,所以引入了DPI的概念。(Dots Per Inch)每英寸的点数。

举例:现在规定有两个手机,尺寸一样。都是宽度为2英寸,高度为3.5英寸(瞎举的,高度咋滴都行)

第一个手机的分辨率为:840*360。也就是在2英寸的屏幕上,有360个像素点,那么每英寸的像素点就是180个。

第二个手机的分辨率为:1280*720.也就是在2英寸的屏幕上,有720个像素点,那么每英寸的像素点就是360个。

个数就是DPI

3:dp

然后引入了dp的概念,这个dp和屏幕分辨率就木有关系了,只和DPI有关系

规定是:当dpi为160时,1dp = 1px;

以此类推:当dpi为320时,1dp = 2px;

1dp = dpi/160 px;

那么,用dp来适配,

还是那两个屏幕,840*360的DPI为180,1280*720的DPI为360.现在来做一个宽为80dp的div吧

第一个屏幕:1dp = (180/160)px = 1.125px; 80dp = 90px

第二个屏幕:1dp = (360/160)px = 2.25px; ?80dp = 180px;

都是对应屏幕的1/4宽。这样也就达到了适配的目的。

4:density

这个密度的值,其实就是dpi/160的值。

诶?上面说1dp = dpi/160 px.那么,1dp = density px?

在安卓中,提供了获取density的方法

getResources().getDisplayMetrics().density

这样,也就实现了dp和px的换算

话说为啥要换算dp和px呢?

因为,xml中既可以用px,也可以用dp

但是java代码中,很多布局相关的单位都是px,比如:

LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

layoutParams.setMargins(10,20,30,40);

这里的margins的四个参数left,top,right,bottom的单位都是px,得换成dp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值