DisplayMetrics 获取屏幕分辨率

由于工程需要,设计到屏幕分辨率以及图片之间比例的换算. ..看到这段代码是相当的熟悉了,:
      Android 已经提供DisplayMetircs 类可以很方便的获取分辨率。下面简要介绍 DisplayMetics 类 ,Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。
        //获取分辨率
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);       
       
        int nowWidth = dm.widthPixels; //当前分辨率 宽度
        int nowHeigth = dm.heightPixels; //当前分辨率高度
       
        而后通过真机(里程牌 480*854)代码测试打印数据:320*569 ,
         而通过模拟器(480*854)测试打印数据为:480*854.
 
       后来发现跟屏幕的密度density有很大的关联:
       int density  = dm.density;
       里程牌(480*854)的密度为:1.5
        G3(320*480)的密度为:1.0
      
       在真机上面获取分辨率的话为:
                //获取分辨率
               DisplayMetrics dm = new DisplayMetrics();
               getWindowManager().getDefaultDisplay().getMetrics(dm);       
       
               int nowWidth = dm.widthPixels; //当前屏幕像素
               int nowHeigth = dm.heightPixels; //当前屏幕像素

  Log.e("密度:",density+"");
  int width = (int) (nowWidth * density);
  int height = (int) (nowHeigth * density);


               这个时候,里程牌(480*854)得到数据为:480*853  囧...按理来说是854哦...由于我获取的数据类型为int..
               如果为float 获取的数据为:480.0 * 853.5 需要四舍五入吧


     同样的代码 在模拟器上面就不能了, 模拟器上面(480*854)的密度为1.5 而它本身获取的就是480*854 ,在乘以密度的话,就会大很多哦...
        
       

见鬼了,刚刚新建了一个工程读取真机屏幕分辨率发现:
                //获取分辨率
               DisplayMetrics dm = new DisplayMetrics();
               getWindowManager().getDefaultDisplay().getMetrics(dm);       
       
               int nowWidth = dm.widthPixels; //当前屏幕像素
               int nowHeigth = dm.heightPixels; //当前屏幕像素
这几行代码,读取的就是当前分辨率,也就是说上面的测试,不对了????
纠结....目前还没有找到原因!

你可能感兴趣的:(android)