获取设备的屏幕分辨率

时间:2016-07-27 13:58:59

标签: android resolution screen-resolution

我使用以下方法获取屏幕尺寸:

public static Point getScreenSize(Context context)
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    int w = wm.getDefaultDisplay().getWidth();
    int h = wm.getDefaultDisplay().getHeight();
    return new Point(w, h);
}

在我的三星Galaxy s6上,此方法返回1080x1920 ...虽然我的设备的分辨率为1440x2560。

为什么呢?有没有更好的方法来获得适用于较新手机的屏幕分辨率?

修改

我在服务中需要这个方法!我没有帮助的视图/活动,只有应用程序上下文!我需要REAL像素

6 个答案:

答案 0 :(得分:7)

获得屏幕分辨率的最佳方法是DisplayMetrics

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;

答案 1 :(得分:5)

如果您要定位API> = 17,请尝试使用getRealSize类的Display方法:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
wm.getDefaultDisplay().getRealSize(size);
String resolution = size.x + "x" + size.y;

对我来说,它有效。

答案 2 :(得分:2)

使用这个:

$output = array_merge($output, $c);

答案 3 :(得分:1)

API会返回应用可以使用的像素数,因此这是正确的结果。

答案 4 :(得分:0)

  

Use this.

DisplayMetrics metrics; 
int width = 0, height = 0;
  

In your onCreate method.

 metrics = new DisplayMetrics();        
 getWindowManager().getDefaultDisplay().getMetrics(metrics);


 height = metrics.heightPixels;     
 width = metrics.widthPixels;

答案 5 :(得分:0)

试试这个:

 Display mDisplay = context.getWindowManager().getDefaultDisplay();

 mDisplay.getWidth();
 mDisplay.getHeight();

请注意,此代码使用 已弃用的 API。