【问题标题】:What is the recommended way to get screen dimension on android在android上获取屏幕尺寸的推荐方法是什么
【发布时间】:2014-03-20 16:28:47
【问题描述】:

经过一番研究,我想出了以下三种获取安卓设备屏幕尺寸的方法。但我仍然不清楚在哪种情况下使用哪一个。它们都是等价的吗?一个比另一个快吗?有什么不同?它们是特定于 API 级别的吗?我应该使用哪一个?我正在寻找一个易于消化、权威的答案来解决所有问题。我已经读了很多。因此,如果我不必通过一堆 cmet 来尝试总结什么是权威真理,那将是有帮助的。

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);
}

【问题讨论】:

  • @MarcinOrlowski 你自己听到了吗?所以要问一个问题,一个人必须是专家吗?有多少人知道如何去做你要求这个人去做的事情?在那些可能声称知道的人中,有多少人可以有效地做到这一点?
  • 不,不需要成为专家。一个人应该努力自己解决问题,并问他/她什么时候真的碰壁了。从这里发布问题开始纯粹是懒惰
  • @MarcinOrlowski 对于急于投反对票的人,您的论点并非来自证据。 OP 提出了三种方法,它们是从研究中综合起来的。所以,不,我不是从这篇文章开始的。克服自己。

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


【解决方案1】:

它们本质上是相同的。 Display.getSize() 仅适用于 API 13(蜂窝)

Point 的第一个参数是 x,它是水平轴,第二个是 y,它应该是垂直的 - 因此,您应该将传递 heightPixelswidthPixels 的顺序切换到 Point 构造函数。

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

【讨论】:

  • 所以听起来我应该将这三种方法合二为一,并使用 if 子句来检查 api 级别。这是一个准确的修订吗?另外,感谢Point 提示:+1。
猜你喜欢
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多