获取 DisplayMetrics 的正确方法是什么,即获取屏幕/显示信息,例如 density
或 xdpi
?
我问是因为我看到了两种解决方法:
第一:
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 的各个地方都见过这两种情况。那么如果有的话有什么区别,什么时候一种方法比另一种更受欢迎(或更合适),为什么?谢谢
最佳答案
public DisplayMetrics getDisplayMetrics ()
Return the current display metrics that are in effect for this resource object. The returned object should be treated as read-only.
public void getMetrics (DisplayMetrics outMetrics)
Initialize a DisplayMetrics object from this display's data.
不同之处在于 Resources
方法返回的指标是该特定 Resources
对象的指标。您始终可以使用构造函数创建一个新的 Resources
实例
Resources(AssetManager assets, DisplayMetrics metrics, Configuration config)
您可以在其中设置您想要的任何指标,不一定是您可以从 getDefaultDisplay()
方法返回的 Display
实例中获取的指标。
这就是区别。如果您仅使用默认资源和默认显示,则值可能不会有所不同。
关于android - 获取 DisplayMetrics : getResources() or getWindowManager() 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6377195/