2011-01-31 17 views
4

我用下面的代碼來找出屏幕大小,但我沒有得到正確的值。如何通過代碼獲取設備的確切屏幕尺寸?

Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth(); 
    int height=display.getHeight(); 

它返回320 x 480的星系標籤..這是不正確的。

如何找到Galaxy Tab的是正確的屏幕尺寸600 X 1024

回答

1

這聽起來像Android這樣認爲您的應用程序是一個「傳統」應用程序(即爲舊版Android設計的應用程序)。從Supporting Multiple Screens

For instance, suppose a given device is using a WVGA medium density screen, classified as a "large" screen, but the application states that it does not support large screens; in this case, the system will again "lie" to the application when it queries for screen dimensions, and report 320x480.

+0

那麼,這是你的問題嗎?我們很樂意告訴我們,我們給你的答案是否有幫助。我注意到,您沒有接受任何問題的答案。 –

3

我總是用這一個,從來沒有遇到一個錯誤:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 
+0

它現在已被棄用。 – rahulserver

1
public static int getScreenWidth(Context context){ 
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
    Display display = windowManager.getDefaultDisplay(); 
    return display.getWidth(); 
} 
public static int getScreenHeight(Context context){ 
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
    Display display = windowManager.getDefaultDisplay(); 
    return display.getHeight(); 
} 
0
在你的程序

,寬度的單位是像素,你說600是可能的DP值,你可以使用如下代碼來驗證:

final float scale = context.getResources().getDisplayMetrics().density; 

prite規模看,如果scale = 320/600 = 0.5333333,那就是說600是dp值。