做了一些研究之后,我想出了以下三种方法来获取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);
}
答案 0 :(得分:1)
它们基本相同。
Display.getSize()
仅适用于API 13(蜂窝)
Point
的第一个参数是x,它是水平轴,第二个是y,它应该是垂直的 - 因此你应该切换你传递的顺序heightPixels
和{{1}进入Point构造函数。
您还可以重复使用widthPixels
字段成员,而不是每次都分配一个新成员。如果活动未处理其自己的配置更改,您可以读取维度一次并存储结果 - 因为如果不重新启动活动,维度不会更改。