我想獲得在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-和高度編程/ –