我有一个不扩展任何活动的类。我想知道用户使用代码使用 LDPI、MDPI、HDPI 或 XHDPI 屏幕。任何想法?我用过DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
,但它需要一个 Activity 来扩展。我希望在不扩展活动的情况下这样做。
问问题
1356 次
1 回答
1
窗口管理器的问题在于它需要活动上下文,再次读取名称window manager
它管理屏幕上的东西,因此,活动。
您可以尝试一些不同的技巧:您将需要此解决方案的上下文,但它不必是活动上下文,它可以是应用程序上下文。实际上,老实说,您将需要可以通过应用程序上下文访问的资源。
在您的 res 文件夹中,为您要查找的所有参数创建一个 value.xml:
// res
|- values-hdpi
|- values.xml
|- values-ldpi
|- values.xml
|- values-mdpi
|- values.xml
|- values-xhdpi
|- values.xml
现在在每个 xml 中添加以下代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="is_ldpi" format="boolean" type="bool">true</item>
<item name="is_hdpi" format="boolean" type="bool">false</item>
<item name="is_mdpi" format="boolean" type="bool">false</item>
<item name="is_xhdpi" format="boolean" type="bool">false</item>
</resources>
仅根据需要更改true
或false
。现在它就像调用一样简单:
boolean is_hdpi = context.getResources().getBoolean(R.bool.is_hdpi);
于 2013-01-09T09:42:40.660 回答