コンテンツに移動

よくアクセスするページ

最近アクセスしたページ

navigation

さまざまな画面密度のサポート

このレッスンでは、さまざまなリソースを提供し、解像度に依存しない測定単位を使用することで、さまざまな画面密度をサポートする方法について説明します。

密度非依存ピクセルを使用する

レイアウトを設計する際に避ける必要がある一般的な落とし穴の 1 つに、絶対的なピクセルを使用して距離やサイズを定義することがあります。 レイアウトの寸法をピクセルで定義することは問題です。画面によって画素密度は異なるため、端末が異なると同じピクセル数が異なる物理サイズになる場合があるからです。 そのため、寸法を指定するときは常に dp 単位または sp 単位を使用します。 dp は、160 dpi でピクセルの物理サイズに相当する密度非依存ピクセルです。 sp は同じ基本単位ですが、ユーザーが設定したテキストサイズによってサイズ変更されるため(スケール非依存ピクセル)、テキストサイズを定義するときはこの測定単位を使用する必要があります(レイアウト サイズではありません)。

ビデオ

DesignBytes: 密度非依存ピクセル


たとえば 2 つのビューの間の間隔を指定する場合は、px ではなく dp を使用します。

<Button android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/clickme"
    android:layout_marginTop="20dp" />

テキスト サイズを指定する場合は、常に sp を使用します。

<TextView android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp" />

別のビットマップを提供する

Android はさまざまな画面密度の端末で実行されるため、ビットマップ リソースは汎用の画面密度(low、medium、high、extra-high)のそれぞれに対して調整する必要があります。これにより、あらゆる画面密度で高品質のグラフィックやパフォーマンスを実現できます。

これらの画像を作成するには、ベクター形式の元データを使用して次のサイズ スケールで各密度の画像を生成します。

つまり、xhdpi 端末で 200x200 の画像を生成する場合、同じリソースを hdpi 端末では 150x150、mdpi 端末では 100x100、ldpi 端末では 75x75 の画像で生成する必要があるということになります。

次に、生成した画像ファイルを res/ の下の適切なサブディレクトリに置くと、アプリケーションが実行されている端末の画面密度に基づいて正しいファイルが自動的に選択されます。

MyProject/
  res/
    drawable-xhdpi/
        awesomeimage.png
    drawable-hdpi/
        awesomeimage.png
    drawable-mdpi/
        awesomeimage.png
    drawable-ldpi/
        awesomeimage.png

その後 @drawable/awesomeimage を参照する際は、画面の dpi に基づき適切なビットマップが常に選択されます。

ランチャー アイコンを mipmap/ フォルダに置きます。

res/...
    mipmap-ldpi/...
        finished_launcher_asset.png
    mipmap-mdpi/...
        finished_launcher_asset.png
    mipmap-hdpi/...
        finished_launcher_asset.png
    mipmap-xhdpi/...
        finished_launcher_asset.png
    mipmap-xxhdpi/...
        finished_launcher_asset.png
    mipmap-xxxhdpi/...
        finished_launcher_asset.png

注: すべてのランチャー アイコンを drawable/ フォルダではなく res/mipmap-[density]/ フォルダに置いて、ランチャー アプリによって最適な解像度のアイコンが使用されるようにする必要があります。 Mipmap フォルダの使用方法については、プロジェクトの概要の管理をご覧ください。

アプリケーションでアイコン アセットを作成する詳細については、アイコンの設計ガイドラインをご覧ください。

このサイトでは、ユーザーが選択したサイトの言語と表示設定を保存する目的で Cookie を使用しています。

Android デベロッパー向けの最新情報やヒントを入手して、Google Play での成功を手に入れましょう。

* 必須

送信しました

WeChat で Google Developers をフォローする

このサイトをで表示しますか?

ページの表示言語としてを選択しましたが、このサイトの言語はに設定されています。

言語設定を変更してこのサイトをで表示しますか?言語設定を変更する場合は、各ページの下にある言語メニューを使用してください。

このクラスには、API レベル 以上が必要です。

API レベル が選択されているため、このドキュメントは非表示になっています。左のナビゲーションの上にあるセレクタを使って、ドキュメントの API レベルを変更できます。

アプリに必要な API レベルを指定する方法について、詳しくは異なるプラットフォーム バージョンのサポートをご覧ください。

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)