我有一个类没有扩展任何Activity。我想知道用户使用LDPI,MDPI,HDPI或XHDPI屏幕使用代码。任何的想法?我使用了DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
但它需要一个Activity来扩展。我希望在没有扩展活动的情况下这样做。
答案 0 :(得分:1)
窗口管理器的问题是它需要活动上下文,再次读取名称window manager
它管理scree上的内容,ergo,活动。
你可以尝试一些不同的技巧: 您将需要此解决方案的上下文,但它不必是活动上下文,它可以是应用程序上下文。实际上,说实话,你需要的资源可以通过应用程序上下文访问。
在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);