"px"、"dip"、"dp"、"sp"の違いは何ですか?

Androidの計測単位の違いは何ですか?

  • px
  • dip
  • ディーピー
  • スプ
ソリューション

Android Developer Documentation](http://developer.android.com/guide/topics/resources/more-resources.html#Dimension)より

1.> px (ピクセル)

Pixels - 画面上の実際のピクセルに対応します。

2.in > in**

inches - 画面の物理的なサイズに基づいています。
1インチ=2.54センチ

3.> mm (ミリメートル)

ミリメートル - 画面の物理的なサイズに基づいています。

4.> pt (ポイント)

ポイント - 1/72インチ(画面の物理的サイズに基づく)。

5.> dp または dip (ディップ)

Density-independent Pixels - 画面の物理的な密度に基づいた抽象的な単位です。これらの単位は、160 dpiの画面に対する相対的なもので、160dpiの画面では1dpが1ピクセルとなります。dp対ピクセルの比率は dp対ピクセルの比率は、スクリーンの密度に応じて変化しますが、必ずしも正比例ではありません。 必ずしも正比例するわけではありません。注:コンパイラは、「dip」と「dp」の両方を受け入れます。 dp」の方が「sp」との整合性がありますが、コンパイラは「dip」も「dp」も受け入れます。

6.6. > sp (スケールに依存しないピクセル)

スケールに依存しないピクセル - これはdpと同じですが、ユーザーのフォントサイズの設定によってもスケールされます。フォントサイズを指定する際には、この単位を使用することをお勧めします。 フォントサイズを指定する際には、この単位を使用することをお勧めします。 画面の密度とユーザーの好みの両方に合わせて調整されます。

Understanding Density Independence In Android](https://www.captechconsulting.com/blogs/understanding-density-independence-in-android)より

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

詳細はGoogle Design Documentationにも記載されています。

解説 (11)

サイズや密度の異なる複数のスクリーンに最適なサポートを実現する方法については、ほとんどすべてがここで説明されています。

  • 複数画面のサポート]1をご覧ください。

スクリーンサイズ

実際の物理的なサイズで、画面の対角線として測定される。 Androidではわかりやすくするために、実際の画面サイズをすべて4つのサイズに分類しています。 簡略化するために、Androidではすべての実際の画面サイズを4つの一般的なサイズ(小、普通、大、特大)に分類しています。

画面密度

画面の物理的な領域内にあるピクセルの数。 通常はdpi(dots per inch)と呼ばれています。例えば、「低」密度の画面では 例えば、「低」密度の画面は、「普通」や「高」密度の画面に比べて、一定の物理的領域内のピクセル数が少ない。 例えば、「低」密度の画面は、「通常」または「高」密度の画面に比べて、所定の物理的領域内の画素数が少ない。簡単に説明すると Androidは、実際の画面密度を6つの一般的な密度に分類しています。 低、中、高、超高、超超高、超超高の6つの密度に分類しています。 超超超超超超超超超超超超超超超超超超超超超超超超超

Orientation
ユーザーの視点から見た画面の向き。 視点から見た画面の向きです。これは、画面のアスペクト比が横長か縦長かを意味します。 画面のアスペクト比が横長か縦長かを意味します。注意していただきたいのは デバイスによっては、デフォルトで異なる向きで動作するだけでなく また、ユーザーがデバイスを回転させたりすると、ランタイムに > 向きが変わることがあるので注意が必要です。 デバイスを回転させると、実行時に向きが変わることがあるので注意が必要です。

解像度
画面上の物理的なピクセル数の合計。 画面上の物理的なピクセルの総数。複数画面のサポートを追加する場合、アプリケーションは アプリケーションは解像度を直接扱うべきではありません。 アプリケーションは、一般化されたサイズと密度のグループで指定された、 > 画面のサイズと密度だけを気にする必要があります。 サイズと密度のグループで指定されています。

密度に依存しないピクセル(dp)*
仮想的なピクセル単位。 UIレイアウトを定義する際に使用すべき仮想的なピクセル単位。 レイアウトの寸法や位置を密度に依存しない方法で表現するために、UIレイアウトを定義する際に使用すべき仮想的なピクセル単位です。 密度に依存しないピクセルは、160dpiの画面上の物理的な1ピクセルに相当します。 dpiの画面上の1つの物理的なピクセルに相当しますが、これはシステムが「中」密度の画面として想定している基本密度です。 これは、システムが「中程度の密度」の画面を想定した基本密度です。実行時には、システムは透過的に以下を処理します。 実行時には、使用中の画面の実際の密度に基づいて、必要に応じてdp単位のスケーリングを スクリーンの実際の密度に基づいて、必要に応じてdp単位のスケーリングを行う。dp単位のスクリーンピクセルへの変換は以下の通りです。 簡単です。 px = dp
(dpi / 160)`. 例えば、240dpiの画面では、1dpは1.5物理ピクセルに相当します。 は1.5物理ピクセルに相当します。アプリケーションのUIを定義する際には、常にdp単位を使用する必要があります。 アプリケーションのUIを定義する際には、常にdp単位を使用するようにしてください。 異なる密度の画面上でUIが適切に表示されるようにするためです。

複数の端末向けにAndroidアプリを開発しようと考えている方は、画面サポートの開発ドキュメントを一度は読んでいるはずです。また、特定の画面構成を持つアクティブなデバイスの実数を知っておくことは、常に良いことです。

  • 画面サイズと密度]2を参照してください。
解説 (5)

具体的にどのようにdpがpxに変換されるのかについては、もう少し詳しく説明します。

  • mdpiのデバイスで動作させた場合、150 x 150 pxのイメージは、150 * 150 dpのスクリーンスペースを占有します。
  • mdpiのデバイスで動作させた場合、150 x 150 pxのイメージは、100 * 100 dpのスクリーンスペースを占有することになります。
  • xhdpiデバイス上で動作させる場合、150x150 px のイメージは 75 * 75 dp のスクリーンスペースを占有する。

逆に、アプリケーションに画像を追加し、それを 100 * 100 dp のコントロールを埋める必要があるとします。サポートされているスクリーンサイズに合わせて、異なるサイズの画像を作成する必要があります。

  • 100 * 100 px` のイメージ(mdpi用
  • 150 * 150 px` イメージ (hdpi用)
  • 200 * 200 px` イメージ(xhdpi用
解説 (4)