为了账号安全,请及时绑定邮箱和手机立即绑定

没有分享这个资源,生成px的类

没有分享这个资源,生成px的类

正在回答

1 回答

// 从这个函数的实现可以看出android系统对dp和sp处理的区别  

public static float applyDimension(int unit, float value,  

           DisplayMetrics metrics)  

   {  

     switch (unit) {  

     case COMPLEX_UNIT_PX:  

      return value;   // px不需要做转换  

     case COMPLEX_UNIT_DIP:  

        return value * metrics.density;   // dp转换成px  

     case COMPLEX_UNIT_SP:  

        return value * metrics.scaledDensity;  // sp转换成px  

     case COMPLEX_UNIT_PT:  

        return value * metrics.xdpi * (1.0f/72);  

     case COMPLEX_UNIT_IN:  

        return value * metrics.xdpi;  

     case COMPLEX_UNIT_MM:  

        return value * metrics.xdpi * (1.0f/25.4f);  

     }  

     return 0;  

看完上述两个函数,有一定基础的同学相信已经一目了然,不过这里我还是做一下详细介绍:

1、 DisplayMetrics是一个封装了屏幕属性的数据结构,其中有屏幕的高度、宽度、dpi(每英寸像素个数)、已及

上面函数中用到的density、scaledDensity等信息;

2、 特定机型的density是确定的,其取值取决于dpi,

如果dpi == 160, 则density = 1; 

如果dpi == 120, 则density = 0.75; 

如果dpi = 320, 则density = 2; 

依次类推,也就是说

density = (dpi*1.0)/ 160;


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-屏幕适配全攻略
  • 参与学习       48084    人
  • 解答问题       63    个

重点概念、常见问题及解决方案,赶快进来学习解决疑惑

进入课程

没有分享这个资源,生成px的类

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号