Android でプログラム的に画面密度を取得するにはどうすればよいですか?
つまり、現在のデバイスの画面 dpi を見つけるにはどうすればいいのでしょうか?
ベストアンサー1
ディスプレイ上の情報は、ディスプレイメトリック構造体:
DisplayMetrics metrics = getResources().getDisplayMetrics();
Android は直接ピクセル マッピングを使用しませんが、量子化された密度非依存ピクセル値をいくつか使用し、実際の画面サイズに合わせて拡大縮小します。そのため、プロパティは定数( 、、、、、またはdpi )metrics.densityDpi
のいずれかになります。DENSITY_xxx
120
160
213
240
320
480
640
実際のLCD ピクセル密度が必要な場合(OpenGL アプリケーションなど) 、水平密度と垂直密度のそれぞれプロパティmetrics.xdpi
とプロパティから取得できます。metrics.ydpi
4より前のAPIレベルをターゲットにしている場合、metrics.density
プロパティは基準密度(160dpi)からの浮動小数点スケーリング係数です。現在提供されている同じ値はmetrics.densityDpi
計算できます。
int densityDpi = (int)(metrics.density * 160f);