我想获得在4.2上运行的Nexus 7的实际屏幕宽度和高度。如何获取设备原始宽度和高度或实际屏幕宽度和高度?
我正在做一些基于设备宽度和高度的运行时计算来调整按钮和一些UI元素的大小,所以它会在所有设备中看起来合适。我的代码在所有SDK 4.1和更低版本中工作良好,但在4.2中无法工作。
我使用下面的代码来获取宽度和高度。
码:1
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
mWidth = displaymetrics.widthPixels;
mHeight = displaymetrics.heightPixels;
码:2
Point size = new Point();
WindowManager w = getWindowManager();
w.getDefaultDisplay().getSize(size);
mWidth = size.x;
mHeight = size.y;
我也曾尝试无证方法
码:3
Display display = getWindowManager().getDefaultDisplay();
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
mWidth = (Integer) mGetRawW.invoke(display);
mHeight = (Integer) mGetRawH.invoke(display);
但这些都不以上是使用Nexus 7 runni ng 4.2,它总是减去状态栏高度,我没有得到全高。
我已经使用了一些方法来计算状态蝙蝠高度,但没有得到正确的价值观,
int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density);
和
Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
有没有得到实际的设备屏幕的高度和宽度任何标准的方式?
看到这个演示的源代码将帮助你实现你喜欢什么http://whats-online.info/science-and-tutorials/121/android-get-screen-width-和高度编程/ –