3

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

4

1 回答 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>

仅根据需要更改truefalse。现在它就像调用一样简单:

  boolean is_hdpi = context.getResources().getBoolean(R.bool.is_hdpi);
于 2013-01-09T09:42:40.660 回答