由于工程需要,设计到屏幕分辨率以及图片之间比例的换算. ..看到这段代码是相当的熟悉了,:
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 已经提供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; //当前屏幕像素
这几行代码,读取的就是当前分辨率,也就是说上面的测试,不对了????
纠结....目前还没有找到原因!