リソースの代替え設定(Resource Qualifiers)についてまとめてみた
リソースの代替え設定(Resource Qualifiers)を使用することは、異なるデバイスや解像度、言語、画面サイズに対応したアプリケーションを開発するために非常に重要です。
Androidでは、resディレクトリ内で異なる資源のバリエーションを提供できます。
以下は、代替設定が可能なリソースの例です。
①解像度別の画像
②画面サイズ別のレイアウト
③言語別の文字列
解像度別の画像
画像は解像度別に配置されます。以下は一般的な解像度別のディレクトリの例です。
res/
├── drawable-mdpi/ # 中密度デバイス
├── drawable-hdpi/ # 高密度デバイス
├── drawable-xhdpi/ # 超高密度デバイス
└── drawable-xxhdpi/ # 超々高密度デバイス
画面サイズ別のレイアウト
画面サイズ別に異なるレイアウトを配置できます。以下は画面サイズ別のディレクトリの例です。
res/
├── layout-small/ # 小さい画面サイズ
├── layout-normal/ # 通常の画面サイズ
├── layout-large/ # 大きい画面サイズ
└── layout-xlarge/ # 特に大きい画面サイズ
言語別の文字列
言語別に異なる文字列リソースを配置できます。以下は言語別のディレクトリの例です。
res/
├── values/ # デフォルトの言語(例:values/strings.xml)
├── values-fr/ # フランス語
└── values-es/ # スペイン語
選ばれる基準とは?
①解像度別の画像
解像度別の画像は、Androidデバイスのディスプレイの解像度によって選択されます。
・・・
デバイスの解像度による選択:
デバイスの解像度が異なる場合、システムは最も解像度に近い画像を選択します。たとえば、drawable-hdpiディレクトリには中密度(hdpi)のデバイス向けの画像があり、システムはhdpiデバイスに対してこの画像を選択します。
解像度の一致がない場合:
完全に一致する解像度の画像が見つからない場合、システムは最も近い解像度の画像をスケーリングして表示します。ただし、解像度が大幅に異なる場合、画像が歪む可能性があります。これを防ぐためには、できるだけ多くの解像度の画像を提供することが望ましいです。
②画面サイズ別のレイアウト
・・・
画面サイズによる選択:
デバイスの画面サイズが異なる場合、システムは最も画面サイズに近いレイアウトを選択します。たとえば、layout-largeディレクトリには大きな画面サイズ向けのレイアウトがあり、システムは大きな画面サイズのデバイスに対してこのレイアウトを選択します。
画面サイズの一致がない場合:
完全に一致する画面サイズのレイアウトが見つからない場合、システムは最も近い画面サイズのレイアウトを使用します。ただし、画面サイズが大幅に異なる場合、レイアウトが適切に表示されない可能性があります。これを防ぐためには、できるだけ多くの画面サイズ向けに異なるレイアウトを提供することが望ましいです。
③言語別の文字列
values-の後ろに言語を設定することでその言語のリソースファイルを設定することができます。
Androidで、valuesディレクトリ内に言語別のサブディレクトリを配置することができます。
このサブディレクトリは、端末の言語によって出し訳が行われます。
具体的な例として、res/values/strings.xmlにはデフォルトの言語(通常は英語)の文字列が定義されています。
しかし、端末の言語がフランス語の場合、values-frディレクトリ内のリソースが優先的に選択されます。