1

スタックオーバーフローは初めてで、スレッド内で質問する方法がわかりません。

これはスレッド用です: How to find the device as LDPI MDPI HDPI or XHDPI

使用されるコードは次のとおりです。

int density= getResources().getDisplayMetrics().densityDpi;

switch(density) {
case DisplayMetrics.DENSITY_LOW:
  Toast.makeText(context, "LDPI", Toast.LENGTH_SHORT).show();
  break;
case DisplayMetrics.DENSITY_MEDIUM:
  Toast.makeText(context, "MDPI", Toast.LENGTH_SHORT).show();
  break;
case DisplayMetrics.DENSITY_HIGH:
  Toast.makeText(context, "HDPI", Toast.LENGTH_SHORT).show();
break;
case DisplayMetrics.DENSITY_XHIGH:
  Toast.makeText(context, "XHDPI", Toast.LENGTH_SHORT).show();
  break;
}

私の電話 (LG Optimus L5) は、技術仕様に 144dpi と記載されていても、MDPI (160) を報告します。これは、コードで完全に動作するため問題ありません。ただし、私の Google Nexus 7 は定数に一致しない 213dpi を報告し、密度の境界への参照を見つけることができません。

回避策 (Android の新機能だと思います) は、密度レイアウト フォルダーのレイアウトに非表示の定数を配置し、コード内の定数をチェックして、どの密度定数が使用されているかを確認することです。

問題は、定数と一致しない値を報告するデバイスを使用して、レイアウトで定数を使用せずにコード内でこの値を決定できるかということです。

ありがとう

4

2 に答える 2

1

213のレポートはDENSITY_TV.

http://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_TVを参照してください

于 2013-09-26T14:28:54.523 に答える