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; //当前屏幕像素
这几行代码,读取的就是当前分辨率,也就是说上面的测试,不对了????
纠结....目前还没有找到原因!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值