密度非依存ピクセル(dp)と拡張可能ピクセル(sp)は、Android デバイスを構成するさまざまな画面密度、サイズクラス、フォーム ファクタ、アスペクト比に均一に応答するレイアウトを構築し、フォントを表示するために不可欠です。
まとめ
- ベースライン グリッドを使用する場合は、4 と 8 の測定値にしてください。
- 仕様は、ピクセルではなく dp と sp で表記します。
- すべてのバケットのビットマップ/ラスター グラフィックをエクスポートします。
- さまざまなサイズクラス、解像度、アスペクト比を念頭に置いて、レスポンシブなマインドセットで設計します。
- 密度非依存ピクセル(dp): 密度非依存ピクセルは、どの画面でも均一な寸法になるように拡大縮小できる柔軟な単位です。画面の物理密度に基づいています。この単位は、160 dpi(1 インチあたりのドット数)画面を基準にしています。160 dpi での 1 dp は 1 px とほぼ等しくなります。
- 拡張可能ピクセル(sp): 拡張可能ピクセルは、dp と同じ機能をフォントに対して提供します。sp のデフォルト値は dp のデフォルト値と同じです。Android システムでは、Android デバイスの設定アプリで設定されたデバイスとユーザーの設定に基づいて、実際に使用するフォントサイズを計算します。
これらの測定単位の主な違いは、スケーラブル ピクセルはユーザーのフォント設定を保持する点です。ユーザー補助でテキストを大きく設定しているユーザーには、テキストサイズの設定に一致するフォントサイズが表示されます。Compose でフォントサイズを変更する方法をご覧ください。
Android では、これらの単位を使用して、さまざまなデバイスと解像度にわたってスケーリングと変換を行います。
密度バケット
密度の低い画面よりも、密度の高い画面のほうが 1 インチあたりのピクセル数が多くなります。その結果、同じピクセル寸法の UI 要素は、低密度画面では大きく、高密度画面では小さく表示されます。そのため、測定値をピクセルで宣言しないでください。
Android は、画面密度の範囲を「バケット」にグループ化し、それらを使用してデバイスに最適なアセットセットを配信します。最もよく使用される密度バケットは、mdpi
、hdpi
、xhdpi
、xxhdpi
、xxxhdpi
です(nodpi
と anydpi
は、デバイスの解像度ごとにスケーリングされないバケットを指します。通常はベクター ドローアブルに使用されます)。それぞれアプリのリソース ファイルに対応しています。
したがって、dp は次の式で計算できます。
dp =(幅(ピクセル)* 160)/ 画面密度
グリッド
ベースライン グリッド
基盤となるグリッドを使用してビルドすると、UI 全体で一定の間隔と配置を作成できます。Android UI では、レイアウト、コンポーネント、間隔に 8 dp グリッドを使用します。
アイコン、テキスト、コンポーネント内の一部の要素など、小さい要素は 4 dp グリッドに揃えるのが最適です。
列グリッド
列はグリッド構造を構築し、本文領域内のコンテンツを分割することで、レイアウトに垂直方向の定義を付与します。コンテンツは、列を含む画面領域に配置されます。基盤となるグリッドに合わせてコンテンツを配置しますが、サイズは柔軟にする必要があります。列グリッドを設定してコンテンツを適用する方法の基本については、レイアウトの基本をご覧ください。
フォーム ファクタ全体で柔軟なレイアウトを作成する方法について詳しくは、マテリアル 3 の標準レイアウトのページをご覧ください。
サイズクラス
ウィンドウ サイズクラスは、アプリのレスポンシブ レイアウト、アダプティブ レイアウトを設計、開発、テストするための、独自のビューポート ブレークポイントのセットです。Android では、ウィンドウ サイズクラスはコンパクト、中程度、拡大の 3 つに分類されます。詳しくは、ウィンドウ サイズクラスをご覧ください。
アスペクト比
アスペクト比は、要素の幅と高さの比率です。アスペクト比は幅:高さで記述します。
レイアウトの一貫性を維持するには、画像、サーフェス、画面サイズなどの要素で、一貫したアスペクト比を使用します。
UI 全体で使用することをおすすめするアスペクト比は次のとおりです。
- 16:9
- 3:2
- 4:3
- 1:1
- 3:4
- 2:3