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();}
网友评论