android 获取设备物理尺寸

 DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double x = Math.pow(dm.widthPixels/dm.xdpi,2);
    double y = Math.pow(dm.heightPixels/dm.ydpi,2);
    double screenInches = Math.sqrt(x+y);
    Log.d("debug","Screen inches : " + screenInches);

在Android 4.0 之前可以通过下面的方式获取屏幕的宽高:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int mScreenW = dm.widthPixels; //得到宽度
int mScreenH = dm.heightPixels; //得到高度```

通过上面的方法在4.0之前,获得的是屏幕的总宽和总高,包括状态栏的高度和导航栏的高度,例如一个480 * 800的设备,通过上面的方法获取的值是480和800,但在4.0后上面的方法获取的高度就是除去导航栏高度外余下的高度值,例如如果导航栏的高度是48的话,在4.0后通过上面的方法获取的 mScreenH 的值是等于 480 - 48 = 432.

所以,如果想要在4.0后获取屏幕的总高度的话,需要采用下面的方法:

Display display = getWindowManager().getDefaultDisplay();
Point point = new Point();
display.getRealSize(point);
int mScreenH = point.y;
int mScreenW = point.x;

这样获取的宽高才是480和800.



public String getScreen() {
int screenH = 0;
int screenW = 0;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
Display display = getWindowManager().getDefaultDisplay();
Point point = new Point();
display.getRealSize(point);
screenH = point.y;
screenW = point.x;
} else {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenW = dm.widthPixels; //得到宽度
screenH = dm.heightPixels; //得到高度
}
String screen =screenW+"*"+screenH;
return screen.trim();}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,631评论 25 709
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,686评论 1 92
  • 使用sketch最重要的一点是设计好控件的规范。 为做好设计规范需要对色彩进行编号,比如:color_a”_1,c...
    youyeath阅读 26,475评论 2 237
  • “宝贝,又是曲妖精啊”看见安迪无奈的点了点头,便开始了『长篇大论』:是不是又和你说娃娃亲的事了,你就说,再说这件事...
    LYD佳阅读 1,703评论 0 0
  • 考察国情社情,弘扬十八大精神 ——艺术设计学院 国情社情考察团 虽然现在经济发展很快,超出人们的意料之外,但是同时...
    愿非所的阅读 1,605评论 0 0