如何在没有在课堂上扩展活动的情况下检查Android设备是HDPI还是MDPI?

时间:2013-01-09 09:08:42

标签: android

我有一个类没有扩展任何Activity。我想知道用户使用LDPI,MDPI,HDPI或XHDPI屏幕使用代码。任何的想法?我使用了DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);但它需要一个Activity来扩展。我希望在没有扩展活动的情况下这样做。

1 个答案:

答案 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>

仅视情况更改truefalse。 现在它就像调用一样简单:

  boolean is_hdpi = context.getResources().getBoolean(R.bool.is_hdpi);