dpとは

定義

dp とは、Density-independent Pixels(密度非依存ピクセル)の略。dip とも書かれます。
英文中では、複数形の dps や dips も使われます。
mdpi(中密度画面, 160dpi)の 1ピクセルとほぼ等しい仮想ピクセル単位です。
多様な解像度の Android 端末で設計するために導入されました。

画面密度との関係

変換式

px = dp × (dpi ÷ 160)

対応表

密度修飾子 画面密度 1dpの実際のピクセル数 備考
ldpi 低密度 0.75px
mdpi 中密度 1px 基準
hdpi 高密度 1.5px
xhdpi 超高密度 2px
xxhdpi 超超高密度 3px
xxxhdpi 超超超高密度 4px

プログラム内での計算方法

下式(1)が、上表の実際のピクセル数 0.75~4 を返します。それを dp に乗じることで px を計算できます。

1
2
3
4
5
// JAVA
// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density; // (1)
// Convert the dps to pixels, based on density scale
int px = (int)(dp * scale);
1
2
3
4
5
// Kotlin
// Get the screen's density scale
val scale: Float = resources.displayMetrics.density // (1)
// Convert the dps to pixels, based on density scale
var px: Int = (dp * scale).toInt()

実機での確認結果

端末 画面サイズ 上記(1)の値 上記(1)に基づいて計算したppi インターネットで記されている値
Pixel 3a 5.6インチ 2.75 440ppi 441ppi
Pixel 3 XL 6.3インチ 3.5 560ppi 523ppi

参考

各種のピクセル密度をサポートする | Android デベロッパー
Pixel density - Material Design

共有