窗口管理器的问题在于它需要活动上下文,再次读取名称window manager
它管理碎片上的东西,ergo,活动。
您可以尝试一些不同的技巧: 您将需要此解决方案的上下文,但它不一定是活动上下文,它可以是应用程序上下文。其实,说实话你需要资源,可以通过应用程序上下文访问资源。
您水库
文件夹中创建的所有参数,你想找出一个value.xml:那些你把下面的代码XML的每一个
// res
|- values-hdpi
|- values.xml
|- values-ldpi
|- values.xml
|- values-mdpi
|- values.xml
|- values-xhdpi
|- values.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);
使用context.getWindowManager()getDefaultDisplay()getMetrics(指标);在你的班级。无需扩展Activity,只需使用Context param初始化您的类。 – hardartcore
想到的一个技巧是将特定/不同的值放在值-hdpi和values-mdpi中......并使用context.getResources来获取它。 – njzk2
http://stackoverflow.com/questions/3166501/getting-the-screen-density-programmatically-in-android 你不需要活动。 – Leonidos