Android リソース

この記事では、Xamarin.Android の Android リソースの概念と、その使用方法について説明します。 Android アプリケーションでリソースを使用してアプリケーションのローカライズをサポートする方法と、さまざまな画面サイズや密度を含む複数のデバイスについて説明します。

概要

Android アプリケーションが単なるソース コードであることはほとんどありません。 多くの場合、アプリケーションを構成するファイルは他にも多数あります。たとえば、ビデオ、画像、フォント、オーディオ ファイルなどです。 これらの非ソース コード ファイルは総称してリソースと呼ばれ、ビルド プロセス中に (ソース コードと共に) コンパイルされ、配布およびデバイスへのインストール用に APK としてパッケージ化されます。

Packaging diagram

リソースは Android アプリケーションにいくつかの利点をもたらします。

  • コード分離 - ソース コードを画像、文字列、メニュー、アニメーション、色などから分離します。このため、リソースはローカライズのときに非常に役立ちます。

  • 複数のデバイスをターゲットにする - コードを変更せずに、さまざまなデバイス構成をより簡単にサポートできます。

  • コンパイル時チェック - リソースは静的であり、アプリケーションにコンパイルされます。 これにより、コンパイル時にリソースの使用状況を確認できるため、間違いを見つけて修正するのが簡単です。これは、見つけにくく修正にコストがかかる実行時とは対照的です。

新しい Xamarin.Android プロジェクトが開始されると、Resources という特殊なディレクトリがいくつかのサブディレクトリと共に作成されます。

Resources folder and contents

上の画像では、アプリケーション リソースはその種類に従い、画像は drawable ディレクトリに配置され、ビューは layout サブディレクトリに配置されるなど、サブディレクトリに編成されます。

Xamarin.Android アプリケーションでこれらのリソースにアクセスするには、2 つの方法があります。コードで "プログラムを使って" 行う方法と、特殊な XML 構文を使って XML で "宣言的に" 行う方法です。

これらのリソースは "既定のリソース" と呼ばれ、より具体的な一致が指定されない限り、すべてのデバイスで使われます。 さらに、あらゆる種類のリソースには、Android が特定のデバイスをターゲットにするために使用できる "代替リソース" がオプションで用意されている可能性があります。 たとえば、ユーザーのロケール、画面サイズ、またはデバイスが縦から横に 90 度回転したかどうかなどをターゲットにするリソースが用意されている場合があります。これらのいずれの場合でも、アプリケーションで使われるリソースは、開発者が追加のコーディング作業を行わなくても、Android によって読み込まれます。

代替リソースを指定するには、特定の種類のリソースを保持するディレクトリの末尾に、"修飾子" と呼ばれる短い文字列を追加します。

たとえば、resources/drawable-de はドイツ語ロケールに設定されたデバイスの画像を指定し、resources/drawable-fr はフランス語ロケールに設定されたデバイスの画像を保持します。 代替リソースを提供する例を以下の図に示します。この場合、デバイスのロケールだけを変更して同じアプリケーションを実行しています。

Example screens for different locales

この記事では、リソースの使用について包括的に説明し、次のトピックについて説明します。

  • Android リソースの基本 - プログラムと宣言で既定のリソースを使い、画像やフォントなどのリソースの種類をアプリケーションに追加します。

  • デバイス固有の構成 - アプリケーションのさまざまな画面解像度と密度をサポートします。

  • ローカライズ - リソースを使って、アプリケーションが使用できるさまざまなリージョンをサポートします。