在android上获取屏幕尺寸的推荐方法是什么?

时间:2014-03-20 16:28:48

标签: android android-layout screen dimensions android-screen

做了一些研究之后,我想出了以下三种方法来获取Android设备的屏幕尺寸。但是我仍然不清楚在哪种情况下使用哪一个。它们都相同吗?是一个比另一个快?有什么不同?他们的Api水平是否具体?我应该使用哪一个?我正在寻找一个易于理解,权威的答案,解决所有问题。我已经读了很多。因此,如果我不必查看一堆评论来试图找出权威真相的摘要,那将会很有帮助。

public static Point getDimension(Activity context) {
    Display display = context.getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    return size;
}

public static Point getDimension(Context c) {
    Resources r = c == null ? Resources.getSystem() : c.getResources();
    DisplayMetrics metrics = r.getDisplayMetrics();
    return new Point(metrics.heightPixels, metrics.widthPixels);
}

public static Point getScreenSize(Activity activity) {
    final DisplayMetrics displayMetrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    return new Point(displayMetrics.heightPixels, displayMetrics.widthPixels);
}

1 个答案:

答案 0 :(得分:1)

它们基本相同。 Display.getSize()仅适用于API 13(蜂窝)

Point的第一个参数是x,它是水平轴,第二个是y,它应该是垂直的 - 因此你应该切换你传递的顺序heightPixels和{{1}进入Point构造函数。

您还可以重复使用widthPixels字段成员,而不是每次都分配一个新成员。如果活动未处理其自己的配置更改,您可以读取维度一次并存储结果 - 因为如果不重新启动活动,维度不会更改。