先ほどの例では、例えばコードやLayoutで文字列定数を直接使うことで、重要な原則が見落とされています:
<Button android:text=”Pattern”
android:id=”@+id/btnPattern”
android:layout_width=”wrap_content”
android:textColor=”@color/black”
android:checked=”true”
android:layout_height=”wrap_content”>
</Button>
Buttonの表示内容を直接 "Pattern "として定義します。アプリケーションを複数のデバイスや言語に対応させたい場合、文字列定数を直接使用すると、アプリケーションを移植する際に多くの問題が発生します。したがって、アプリケーションを設計する際の重要な原則は、UI関連のリソースはできるだけ外部リソースとして定義することです。
Androidは複数のリソースタイプをサポートしており、それぞれにデフォルトのリソースと複数のオプションのリソースを定義できます。
デフォルト・リソースは、デバイス構成や言語に依存しないように定義され、デバイス構成に対応するリソースが見つからない場合に使用されます。例えば、res/layoutでデフォルトのUIレイアウトを定義し、res/layout-landでlandscapeを定義すると、Androidは実行時にデバイス構成に基づいて適切なリソースを自動的に選択します。
以下の図は、2つの異なるコンフィギュレーションでオプショナル・リソースが定義されていない場合、デフォルトのリソース定義が使用されることを示しています:
以下のアプリケーション定義では、2つの異なるデバイス用に、デフォルトのリソースと、画面が横向きに表示される場合のリソースの2つを定義しています:
オプショナルリソースを定義する場合、Androidではオプショナルリソースの名前の付け方について一定のルールがあります





