Android リソースの基本Android Resource Basics

ほぼすべての Android アプリケーションは何らかのリソースには少なくとも多くの場合、XML ファイルの形式でユーザー インターフェイスのレイアウトがあります。Almost all Android applications will have some sort of resources in them; at a minimum they often have the user interface layouts in the form of XML files. Xamarin.Android アプリケーションが作成されると、既定のリソースは、Xamarin.Android プロジェクト テンプレートでのセットアップです。When a Xamarin.Android application is first created, default resources are setup by the Xamarin.Android project template:

既定のリソースを構成する 5 つのファイルは、リソース フォルダーに作成されました。The five files that make up the default resources were created in the Resources folder:

  • Icon.png –アプリケーションの既定のアイコンIcon.png – The default icon for the application

  • Main.axml –アプリケーションの既定のユーザー インターフェイスのレイアウト ファイルです。Main.axml – The default user interface layout file for an application. Android 間を使用して、 .xmlファイルの拡張機能は、Xamarin.Android で使用して、 .axmlファイル拡張子。Note that while Android uses the .xml file extension, Xamarin.Android uses the .axml file extension.

  • Strings.xml –アプリケーションのローカライズを支援ストリング テーブルStrings.xml – A string table to help with localization of the application

  • AboutResources.txt –これは必要ありませんし、安全に削除された可能性があります。AboutResources.txt – This is not necessary and may safely be deleted. だけのリソース フォルダーとファイルが、高レベルな概要を提供します。It just provides a high level overview of the Resources folder and the files in it.

  • Resource.designer.cs –このファイルが自動的に生成され、Xamarin.Android と一意の保留によって管理される ID の各リソースに割り当てられます。Resource.designer.cs – This file is automatically generated and maintained by Xamarin.Android and holds the unique ID's assigned to each resource. これは非常に似ています、Java で記述された Android アプリケーションを持つ R.java ファイルと同じ目的です。This is very similar and identical in purpose to the R.java file that an Android application written in Java would have. Xamarin.Android ツールによって自動的に作成し、時間の経過に再生成されます。It is automatically created by the Xamarin.Android tools and will be regenerated from time to time.

作成して、リソースにアクセスします。Creating and Accessing Resources

リソースの作成は、対象のリソースの種類のディレクトリにファイルを追加するだけです。Creating resources is as simple as adding files to the directory for the resource type in question. 以下のスクリーン ショットは、ドイツ語のロケールの文字列リソースがプロジェクトに追加されたかを示しています。The screen shot below shows string resources for German locales were added to a project. ときにStrings.xml 、ファイルに追加された、ビルド アクションに自動的に設定されたAndroidResource Xamarin.Android ツールによって。When Strings.xml was added to the file, the Build Action was automatically set to AndroidResource by the Xamarin.Android tools:

これにより、Xamarin.Android ツールを適切にコンパイルし、APK ファイルへのリソースを埋め込みます。This allows the Xamarin.Android tools to properly compile and embed the resources in to the APK file. 何らかの理由の場合、ビルド アクションに設定されていないAndroid リソースはファイル、APK から除外し、読み込みまたはリソースにアクセスしようとすると、実行時エラーになり、アプリケーションがクラッシュします。If for some reason the Build Action is not set to Android Resource, then the files will be excluded from the APK, and any attempt to load or access the resources will result in a run-time error and the application will crash.

または Android には、リソース アイテムのファイル名が小文字のみがサポートされます、Xamarin.Android では少し寛容; に注意してください。これは、大文字と小文字の両方のファイル名をサポートします。Also, it's important to note that while Android only supports lowercase filenames for resource items, Xamarin.Android is a bit more forgiving; it will support both uppercase and lowercase filenames. イメージ名の規則は、区切り記号としてアンダー スコアと小文字を使用する (たとえば、マイ_イメージ_name.png)。The convention for image names is to use lowercase with underscores as separators (for example, my_image_name.png). ダッシュやスペースを区切り記号として使用する場合にリソース名を処理できないことに注意してください。Note that resource names cannot be processed if dashes or spaces are used as separators.

アプリケーションで使用する 2 つの方法があるリソースがプロジェクトに追加されたら、–プログラムで (コード) 内や、XML ファイル。Once resources have been added to a project, there are two ways to use them in an application – programmatically (inside code) or from XML files.

リソースをプログラムで参照します。Referencing Resources Programmatically

一意のリソース ID を割り当てられているこれらのファイルをプログラムでアクセスするにはTo access these files programmatically, they are assigned a unique resource ID. このリソース ID と呼ばれる特殊なクラスで定義されている整数Resource、ファイル内に存在Resource.designer.cs、このようなものになります。This resource ID is an integer defined in a special class called Resource, which is found in the file Resource.designer.cs, and looks something like this:

public partial class Resource
{
    public partial class Attribute
    {
    }
    public partial class Drawable {
        public const int Icon=0x7f020000;
    }
    public partial class Id
    {
        public const int Textview=0x7f050000;
    }
    public partial class Layout
    {
        public const int Main=0x7f030000;
    }
    public partial class String
    {
        public const int App_Name=0x7f040001;
        public const int Hello=0x7f040000;
    }
}

それぞれのリソース ID は、リソースの種類に対応する入れ子になったクラス内に含まれています。Each resource ID is contained inside a nested class that corresponds to the resource type. たとえば、ファイルIcon.png Xamarin.Android の更新をプロジェクトに追加された、Resourceという入れ子になったクラスを作成するクラス、Drawable定数内で名前付きIconします。For example, when the file Icon.png was added to the project, Xamarin.Android updated the Resource class, creating a nested class called Drawable with a constant inside named Icon. これにより、ファイルIcon.pngとしてコードで参照されるResource.Drawable.Iconします。This allows the file Icon.png to be referred to in code as Resource.Drawable.Icon. Resourceクラス手動で編集しないでとに加えた変更は、Xamarin.Android によって上書きされます。The Resource class should not be manually edited, as any changes that are made to it will be overwritten by Xamarin.Android.

プログラムで (コード) 内のリソースを参照するときに、次の構文を使用するリソースのクラス階層を使用してアクセスできます。When referencing resources programmatically (in code), they can be accessed via the Resources class hierarchy which uses the following syntax:

@[<PackageName>.]Resource.<ResourceType>.<ResourceName>
  • PackageName –リソースを提供する、のみ、パッケージが必要なときに使用されている他のパッケージからのリソース。PackageName – The package which is providing the resource and is only required when resources from other packages are being used.

  • ResourceType –上記で説明したリソース クラス内にある入れ子になったリソースの種類します。ResourceType – This is the nested resource type that is within the Resource class described above.

  • リソース名 – (拡張子なし)、リソースのファイル名または XML 要素に含まれるリソースの android: name 属性の値になります。Resource Name – this is the filename of the resource (without the extension) or the value of the android:name attribute for resources that are in an XML element.

XML からリソースを参照します。Referencing Resources from XML

XML ファイルにリソースを以下へのアクセス、特別な構文。Resources in an XML file are accessed by a following a special syntax:

@[<PackageName>:]<ResourceType>/<ResourceName>.
  • PackageName –リソースを提供する、のみ、パッケージが必要なときに使用されている他のパッケージからのリソース。PackageName – the package which is providing the resource and is only required when resources from other packages are being used.

  • ResourceType –リソース クラス内にある入れ子になったリソースの種類します。ResourceType – This is the nested resource type that is within the Resource class.

  • リソース名–これは、リソースのファイル名 (せずファイルの種類の拡張機能) の値は、 android:name XML 要素に含まれるリソースの属性。Resource Name – this is the filename of the resource (without the file type extension) or the value of the android:name attribute for resources that are in an XML element.

レイアウト ファイルの内容などMain.axml、次に示します。For example the contents of a layout file, Main.axml, are as follows:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    <ImageView android:id="@+id/myImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/flag" />
</LinearLayout>

この例では、 ImageView という名前の描画可能なリソースが必要なフラグします。This example has an ImageView that requires a drawable resource named flag. ImageViewがそのsrc属性に設定 @drawable/flag**します。The ImageView has its src attribute set to @drawable/flag**. Android は、ディレクトリ内になります、アクティビティの開始時にリソース/ディスプレイという名前のファイルのflag.png (ファイルの拡張機能が、別のイメージ形式をこのようなにできるflag.jpg)そのファイルを読み込むし、表示、ImageViewします。When the activity starts, Android will look inside the directory Resource/Drawable for a file named flag.png (the file extension could be another image format, like flag.jpg) and load that file and display it in the ImageView. このアプリケーションを実行すると、次の図のようになります。When this application is run, it would look something like the following image:

ローカライズされた ImageView