Skip to content

Most visited

Recently visited

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 フォルダの使用方法については、プロジェクトの概要の管理をご覧ください。

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

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

WeChat で Google Developers をフォローする

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)