获取DisplayMetrics的正确方法是什么,即获取density
或xdpi
等屏幕/显示信息?
我问,因为我已经看到了两种解决方法:
FIRST:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
然后按metrics.density
或metrics.xdpi
等获取信息
第二
getResources().getDisplayMetrics().density
在这个方法中我相信你也可以初始化一个变量来保存DisplayMetric然后像FIRST方法那样获取信息:
DisplayMetrics metricsMethodTwo = getResources().getDisplayMetrics()
然后您可以获得正常的信息:metricsMethodTwo.density
或metricsMethodTwo.xdpi
我在Docs的各个地方都见过。那么有什么区别,如果有的话,何时一种方法比另一方更受青睐(或更合适)?为什么?感谢
答案 0 :(得分:17)
public DisplayMetrics getDisplayMetrics ()
返回对此资源对象有效的当前显示指标 。返回的对象应该被视为只读。
public void getMetrics (DisplayMetrics outMetrics)
从此显示的数据初始化DisplayMetrics对象。
不同之处在于Resources
方法返回的指标是该特定Resources
对象的指标。您始终可以使用构造函数
Resources
实例
Resources(AssetManager assets, DisplayMetrics metrics, Configuration config)
您可以在其中设置所需的任何指标,而不一定是您可以从方法Display
返回的getDefaultDisplay()
实例中获取的指标。
这就是区别。如果你只使用默认资源和默认显示,那么它在值中可能没有区别。