获取DisplayMetrics的正确方法:getResources()或getWindowManager()

时间:2011-06-16 19:06:37

标签: android

获取DisplayMetrics的正确方法是什么,即获取densityxdpi等屏幕/显示信息?

我问,因为我已经看到了两种解决方法:

FIRST:

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

然后按metrics.densitymetrics.xdpi等获取信息

第二

    getResources().getDisplayMetrics().density

在这个方法中我相信你也可以初始化一个变量来保存DisplayMetric然后像FIRST方法那样获取信息:

    DisplayMetrics metricsMethodTwo = getResources().getDisplayMetrics()

然后您可以获得正常的信息:metricsMethodTwo.densitymetricsMethodTwo.xdpi

我在Docs的各个地方都见过。那么有什么区别,如果有的话,何时一种方法比另一方更受青睐(或更合适)?为什么?感谢

1 个答案:

答案 0 :(得分:17)

public DisplayMetrics getDisplayMetrics ()
  

返回对此资源对象有效的当前显示指标 。返回的对象应该被视为只读。

public void getMetrics (DisplayMetrics outMetrics)
  

从此显示的数据初始化DisplayMetrics对象

不同之处在于Resources方法返回的指标是该特定Resources对象的指标。您始终可以使用构造函数

创建新的Resources实例
Resources(AssetManager assets, DisplayMetrics metrics, Configuration config)

您可以在其中设置所需的任何指标,而不一定是您可以从方法Display返回的getDefaultDisplay()实例中获取的指标。

这就是区别。如果你只使用默认资源和默认显示,那么它在值中可能没有区别。