2013-01-09 44 views
3

我有一个类没有扩展任何活动。我想找出用户使用LDPI,MDPI,HDPI或XHDPI屏幕使用代码。任何想法?我已使用DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);,但它需要一个活动来扩展。我希望没有扩大活动。如何检查Android设备是HDPI还是MDPI,但不在类中扩展Activity?

+0

使用context.getWindowManager()getDefaultDisplay()getMetrics(指标);在你的班级。无需扩展Activity,只需使用Context param初始化您的类。 – hardartcore

+0

想到的一个技巧是将特定/不同的值放在值-hdpi和values-mdpi中......并使用context.getResources来获取它。 – njzk2

+0

http://stackoverflow.com/questions/3166501/getting-the-screen-density-programmatically-in-android 你不需要活动。 – Leonidos

回答

1

窗口管理器的问题在于它需要活动上下文,再次读取名称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> 

只适当更改truefalse。 现在它只是简单的调用:。

boolean is_hdpi = context.getResources().getBoolean(R.bool.is_hdpi); 
相关问题