android 屏幕dp值计算

google从android 3.2版本之后使用sw**dp方式来进行多屏幕适配,那么屏幕的具体dp值多少?
为了确定设备屏幕的dp值,查找了些关于屏幕px,sp,dp值计算的资料。
这里呢,我把px2dp的方法贴出来以供大家参考:

/**
         * 将px值转换为dip或dp值,保证尺寸大小不变
         * @param context
         * @param pxValue
         * @return
         */
         public static int px2dip(Context context, float pxValue) {
                 final float scale = context.getResources().getDisplayMetrics().density;  
                 return (int) (pxValue / scale + 0.5f);
         }

公式也是蛮简单的。为了了解更多的内容信息,我这里呢查看了官方api的资料和源码资料来做参考。
开发安卓应用,总不免会遇到屏幕适配问题。google官方api也给我们讲了非常多的适配方法,其中谷歌采用dp值的屏幕宽高度量单位目的就是为了在尺寸相近的设备屏幕上展示相近的界面效果,并且按照屏幕的像素密度ppi划分了一些标准,以供开发人员适配,大家都知道在android工程的res中的drawable可以使ldpi,mdpi,hdpi,xhdpi等限令名来按屏幕适配,这些划分在源码中也能很容易的找到:
android源码中负责屏幕密度计算的类是DisplayMetrics。
在这个类的属性变量声明部分,我们看到了api中提到的屏幕密度分类(这里以android20版本源码作为参考,其他版本原理一致):

     public static final int DENSITY_LOW = 120;
     public static 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值