如何通过代码获得设备的确切屏幕尺寸?

时间:2011-01-31 05:19:22

标签: android

我使用下面的代码来查找屏幕尺寸,但我没有得到正确的值。

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

对于galaxy tab,它返回320 x 480 ..这是不正确的。

如何找到星系标签的正确屏幕尺寸,即600 x 1024。

4 个答案:

答案 0 :(得分:3)

我总是使用这个,并且从未遇到过错误:

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

答案 1 :(得分:1)

这听起来像Android认为您的应用程序是一个“遗留”应用程序(即专为旧版Android设计的应用程序)。来自Supporting Multiple Screens

  

例如,假设某个设备使用的是WVGA中密度屏幕,被归类为“大屏幕”,但应用程序声明它不支持大屏幕;在这种情况下,当系统查询屏幕尺寸时,系统将再次“撒谎”到应用程序,并报告320x480。

答案 2 :(得分: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();
}

答案 3 :(得分:0)

在你的程序中,宽度的单位是px,你说的600可能是dp值,你可以使用以下代码来验证:

final float scale = context.getResources().getDisplayMetrics().density;
如果scale = 320/600 = 0.5333333,那么

可以看到比例,即600是dp值。