Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取DisplayMetrics的正确方法:getResources()或getWindowManager()_Android - Fatal编程技术网

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

Android 获取DisplayMetrics的正确方法:getResources()或getWindowManager(),android,Android,获取DisplayMetrics的正确方法是什么,即获取屏幕/显示信息,如密度或xdpi 我这样问是因为我看到了两种方法: 第一: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); 然后通过metrics.density或metrics.xdpi等获取信息 第二: getResources().getDisp

获取DisplayMetrics的正确方法是什么,即获取屏幕/显示信息,如
密度
xdpi

我这样问是因为我看到了两种方法:

第一:

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
然后通过
metrics.density
metrics.xdpi
等获取信息

第二:

    getResources().getDisplayMetrics().density
在这种方法中,我相信您也可以初始化一个变量来保存DisplayMetric,然后像第一种方法一样获取信息:

    DisplayMetrics metricsMethodTwo = getResources().getDisplayMetrics()
然后你可以得到像normal一样的信息:
metricsMethodTwo.density
metricsMethodTwo.xdpi

我在文档的不同地方都看到过。那么,如果有的话,区别是什么?什么时候一种方法比另一种更受欢迎(或更合适),为什么?谢谢

public DisplayMetrics getDisplayMetrics ()
返回对该资源对象有效的当前显示度量值。返回的对象应被视为只读对象

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

不同之处在于,
Resources
方法返回的度量是该特定
Resources
对象的度量。您始终可以使用构造函数创建一个新的
Resources
实例

Resources(AssetManager assets, DisplayMetrics metrics, Configuration config)
您可以在其中设置所需的任何度量,而不一定是从方法
getDefaultDisplay()
返回的
Display
实例中获得的度量


这就是区别。如果您只使用默认资源和默认显示,则值可能不会有什么不同。

谢谢!不过,我仍在尝试想象您何时会创建自己的
资源。有没有一个你什么时候会这样做或者为什么会这样做的例子?(即,两种方法的实际值何时会不同?)
Resources(AssetManager assets, DisplayMetrics metrics, Configuration config)