3

アクティビティを拡張しないクラスが1つあります。ユーザーがコードを使用してLDPI、MDPI、HDPI、またはXHDPI画面を使用していることを知りたい。何か案が?使用DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);しましたが、拡張するにはアクティビティが必要です。私は活動を拡張せずにそれが欲しいです。

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>

trueまたはを必要に応じて変更するだけfalseです。今では、呼び出すのと同じくらい簡単です。

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