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

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

我问,因为我已经看到了两种方法去做这件事:

第一:

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

然后通过metrics.densitymetrics.xdpi等获取信息

第二:

  getResources().getDisplayMetrics().density 

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

  DisplayMetrics metricsMethodTwo = getResources().getDisplayMetrics() 

然后你可以得到正常的信息: metricsMethodTwo.densitymetricsMethodTwo.xdpi

我已经在Docs的不同地方见过 那么,如果有什么区别,什么时候有一种方法比另一种更受欢迎(或更合适),为什么呢? 谢谢

Solutions Collecting From Web of "正确的方法来获得DisplayMetrics:getResources()或getWindowManager()"

 public DisplayMetrics getDisplayMetrics () 

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

 public void getMetrics (DisplayMetrics outMetrics) 

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

区别在于, Resources方法返回的度量标准是特定Resources对象的度量标准。 您始终可以使用构造函数创build一个新的Resources实例

 Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) 

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

这是不同的。 如果仅使用默认资源和默认显示,则可能不会有所作为。