2013-03-22 45 views
0

我嘗試以編程方式讀出設備的屏幕分辨率。我想我的應用程序以支持從4所有API版本好了,不幸的是,讀取分辨率的API已經beenn從版本12更改爲13Android:獲取屏幕分辨率或API版本丟失

這是我的代碼:

int Measuredwidth = 0; 
int Measuredheight = 0; 

WindowManager w = getWindowManager(); 
if (Build.VERSION.SDK_INT >= 13) { 
    Point size = new Point(); 
    w.getDefaultDisplay().getSize(size); 
    Measuredwidth = size.x; 
    Measuredheight = size.y; 
} else { 
    Display d = w.getDefaultDisplay(); 
    Measuredwidth = d.getWidth(); 
    Measuredheight = d.getHeight(); 
} 

和它不編譯。 :(

Call requires API level 13 (current min is 4): android.view.Display#getSize 

那麼如何才能解決這個問題?

回答

2

這種 「編譯錯誤」,實際上是皮棉錯誤。

Lint API Check文章有可用的很多信息。

你可以通過使用@TargetApi註釋簡單地註釋代碼來將「代碼」標記爲針對更新版本的API。

這樣可以讓您的minSdkVe rsion並支持舊版本的Android。

+0

奇怪的是,我必須把它解壓到一個函數使用'@ TargetApi'tag。 – 2013-03-22 17:32:51

-3

,你可以做這樣的:

int Measuredwidth = 0; 
int Measuredheight = 0; 

Display d = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
try { 
    Method method = d.getClass().getMethod("getSize", Point.class); 
    method.invoke(defaultDisplay, point); 
    Measuredwidth = size.x; 
    Measuredheight = size.y; 

} catch (Exception e) { 

} 
if (Measuredwidth == 0){ 
    Measuredwidth = d.getWidth(); 
    Measuredheight = d.getHeight(); 
}