2012-11-19 130 views
5

我想獲得在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; 

有沒有得到實際的設備屏幕的高度和寬度任何標準的方式?

回答

1

給它的API 17的最後變化的嘗試:

http://developer.android.com/reference/android/view/Display.html#getRealSize(android.graphics.Point

公共無效getRealSize(點如雷貫耳)
獲取顯示器的實際尺寸未減去任何窗口裝飾或應用任何兼容性比例因子。

如果這一點兒也不工作,你可以嘗試:

http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics

+0

看到這個演示的源代碼將幫助你實現你喜歡什麼http://whats-online.info/science-and-tutorials/121/android-get-screen-width-和高度編程/ –

0
int height = getResources().getDisplayMetrics().heightPixels; 
int width = getResources().getDisplayMetrics().widthPixels; 

高度代表了設備的屏幕高度像素和 寬度代表以像素爲單位設備的屏幕寬度。

0

試試這個

int width = 0; 
int height =0; 

    Display display = activity.getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT >= 13) { 
     Point size = new Point(); 
     display.getSize(size); 
     width = size.x; 
     height = size.y; 
    } else { 
     width = display.getWidth(); 
     height = display.getHeight(); 
    }