Android 11 デベロッパー プレビュー 2 が公開されました。ぜひお試しのうえ、フィードバックをお寄せください

その他のリソースタイプ

このページでは、以下のような外部化可能なその他のリソースタイプについて定義します。

ブール値
ブール値を格納する XML リソース。
カラー
カラー値(16 進数のカラー)を格納する XML リソース。
サイズ
サイズ値(測定単位付き)を格納する XML リソース。
ID
アプリのリソースやコンポーネントに対して一意の識別子を提供する XML リソース。
整数
整数値を格納する XML リソース。
整数配列
整数の配列を提供する XML リソース。
型付き配列
ドローアブルの配列に使用可能な TypedArray を提供する XML リソース。

ブール値

XML 内で定義されたブール値。

注: ブール値は、name 属性で提供される値を使用して参照されるシンプルなリソースです(XML ファイルの名前を使用して参照されるわけではありません)。そのため、単一の XML ファイル内で、単一の <resources> 要素の下で、ブール値リソースを他のシンプルなリソースと組み合わせることができます。

ファイルの場所:
res/values/filename.xml
ファイル名は任意です。<bool> 要素の name がリソース ID として使用されます。
リソース参照:
Java の場合: R.bool.bool_name
XML の場合: @[package:]bool/bool_name
構文:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool
            name="bool_name"
            >[true | false]</bool>
    </resources>
    
要素:
<resources>
必須。ルートノードにする必要があります。

属性はありません。

<bool>
ブール値(true または false)。

属性:

name
文字列。ブール値の名前。これはリソース ID として使用されます。
例:
次の XML ファイルを res/values-small/bools.xml に保存するとします。
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="screen_small">true</bool>
        <bool name="adjust_view_bounds">true</bool>
    </resources>
    

次のアプリコードは、ブール値を取得します。

Kotlin

    val screenIsSmall: Boolean = resources.getBoolean(R.bool.screen_small)
    

Java

    Resources res = getResources();
    boolean screenIsSmall = res.getBoolean(R.bool.screen_small);
    

次のレイアウト XML は、属性にブール値を使用しています。

    <ImageView
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:src="@drawable/logo"
        android:adjustViewBounds="@bool/adjust_view_bounds" />
    

カラー

XML 内で定義されたカラー値。カラーは、RGB 値とアルファ チャンネルで指定します。カラーリソースは、16 進数のカラー値を使用できる任意の場所で使用できます。また、XML 内でドローアブル リソースが想定されている場合(たとえば、android:drawable="@color/green")も、カラーリソースを使用することができます。

値は常に番号記号(#)で始め、その後に次のいずれかの形式で Alpha-Red-Green-Blue 情報を続けます。

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

注: カラーは、name 属性で提供される値を使用して参照されるシンプルなリソースです(XML ファイルの名前を使用して参照されるわけではありません)。そのため、単一の XML ファイル内で、単一の <resources> 要素の下で、カラーリソースを他のシンプルなリソースと組み合わせることができます。

ファイルの場所:
res/values/colors.xml
ファイル名は任意です。<color> 要素の name がリソース ID として使用されます。
リソース参照:
Java の場合: R.color.color_name
XML の場合: @[package:]color/color_name
構文:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color
            name="color_name"
            >hex_color</color>
    </resources>
    
要素:
<resources>
必須。ルートノードにする必要があります。

属性はありません。

<color>
16 進数で表現したカラー(上記を参照)。

属性:

name
文字列。カラーの名前。これはリソース ID として使用されます。
例:
次の XML ファイルを res/values/colors.xml に保存するとします。
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
       <color name="opaque_red">#f00</color>
       <color name="translucent_red">#80ff0000</color>
    </resources>
    

次のアプリコードは、カラーリソースを取得します。

Kotlin

    val color: Int = resources.getColor(R.color.opaque_red)
    

Java

    Resources res = getResources();
    int color = res.getColor(R.color.opaque_red);
    

次のレイアウト XML は、カラーを属性に適用しています。

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/translucent_red"
        android:text="Hello"/>
    

サイズ

XML 内で定義されたサイズ値。サイズは、数値に測定単位を付加して指定します。たとえば、10px、2in、5sp のように指定します。Android では次の測定単位がサポートされています。

dp
密度非依存ピクセル - 画面の物理密度に基づく抽象単位。この単位は、160 dpi(1 インチあたりのドット数)画面を基準にしています。160 dpi での 1 dp は 1 px とほぼ等しくなります。高密度画面で実行する場合、1 dp の描画に使用されるピクセル数は、画面の dpi に適した係数に基づいて増加します。同様に、低密度画面の場合、1 dp に使用されるピクセル数が減少します。dp とピクセルの比率は、画面の密度に応じて変化しますが、必ずしも正比例するわけではありません。px 単位の代わりに dp 単位を使用すると、レイアウト内のビューのサイズを、さまざまな画面密度に合わせて簡単かつ適切に変更することができます。つまり、実画面での UI 要素を、デバイスを問わず一貫した大きさで表示できます。
sp
スケール非依存ピクセル - これは dp 単位と似ていますが、ユーザーのフォントサイズ環境設定に基づいてスケーリングされます。フォントサイズを指定する場合は、この単位を使用することをおすすめします。画面密度とユーザー環境設定の両方に合わせて調整されるようになります。
pt
ポイント - 画面の物理サイズに基づく単位。密度が 72 dpi の画面の場合、1/72 インチになります。
px
ピクセル - 画面上の実際のピクセルに対応します。実際の表示サイズがデバイスによって変わる可能性があるため、この測定単位はおすすめしません。1 インチあたりのピクセル数は、デバイスによって異なる場合があり、画面上で利用可能な総ピクセル数も、デバイスによって増減する場合があります。
mm
ミリメートル - 画面の物理サイズに基づきます。
in
インチ - 画面の物理サイズに基づきます。

注: サイズは、name 属性で提供される値を使用して参照されるシンプルなリソースです(XML ファイルの名前を使用して参照されるわけではありません)。そのため、単一の XML ファイル内で、単一の <resources> 要素の下で、サイズリソースを他のシンプルなリソースと組み合わせることができます。

ファイルの場所:
res/values/filename.xml
ファイル名は任意です。<dimen> 要素の name がリソース ID として使用されます。
リソース参照:
Java の場合: R.dimen.dimension_name
XML の場合: @[package:]dimen/dimension_name
構文:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen
            name="dimension_name"
            >dimension</dimen>
    </resources>
    
要素:
<resources>
必須。ルートノードにする必要があります。

属性はありません。

<dimen>
浮動小数点数と測定単位(dp、sp、pt、px、mm、in)で表現されるサイズ(上記を参照)。

属性:

name
文字列。サイズの名前。これはリソース ID として使用されます。
例:
次の XML ファイルを res/values/dimens.xml に保存するとします。
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen name="textview_height">25dp</dimen>
        <dimen name="textview_width">150dp</dimen>
        <dimen name="ball_radius">30dp</dimen>
        <dimen name="font_size">16sp</dimen>
    </resources>
    

次のアプリコードは、サイズを取得します。

Kotlin

    val fontSize: Float = resources.getDimension(R.dimen.font_size)
    

Java

    Resources res = getResources();
    float fontSize = res.getDimension(R.dimen.font_size);
    

次のレイアウト XML は、サイズを属性に適用しています。

    <TextView
        android:layout_height="@dimen/textview_height"
        android:layout_width="@dimen/textview_width"
        android:textSize="@dimen/font_size"/>
    

ID

XML 内で定義された一意のリソース ID。<item> 要素内で指定されている名前を使用して、Android デベロッパー ツールがプロジェクトの R.java クラス内に一意の整数を作成します。これは、アプリリソースの識別子として(たとえば、UI レイアウト内の View)、あるいは、アプリコード内で使用する一意の整数として(たとえば、ダイアログや結果コードの ID)、使用することができます。

注: ID は、name 属性で提供される値を使用して参照されるシンプルなリソースです(XML ファイルの名前を使用して参照されるわけではありません)。そのため、単一の XML ファイル内で、単一の <resources> 要素の下で、ID リソースを他のシンプルなリソースと組み合わせることができます。なお、ID リソースは、実際のリソース アイテムを参照しません。単なる一意の ID であり、他のリソースにアタッチしたり、アプリ内で一意の整数として使用したりすることができます。

ファイルの場所:
res/values/filename.xml
ファイル名は任意です。
リソース参照:
Java の場合: R.id.name
XML の場合: @[package:]id/name
構文:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <item
            type="id"
            name="id_name" />
    </resources>
    
要素:
<resources>
必須。ルートノードにする必要があります。

属性はありません。

<item>
一意の ID を定義します。値は指定せず、属性だけを指定します。

属性:

type
「id」にする必要があります。
name
文字列。ID の一意の名前。
例:

次の XML ファイルを res/values/ids.xml に保存するとします。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <item type="id" name="button_ok" />
        <item type="id" name="dialog_exit" />
    </resources>
    

次のレイアウト スニペットは、Button ウィジェットに対して「button_ok」ID を使用します。

    <Button android:id="@id/button_ok"
        style="@style/button_style" />
    

上記の ids.xml サンプルで定義されているとおり、この ID はすでに存在しているため、android:id 値の ID 参照にプラス記号は含まれません(android:id="@+id/name" の形式で、プラス記号を使用して XML リソースに ID を指定した場合、「name」ID が存在しておらず、作成する必要があることを意味します)。

別の例として、次のコード スニペットは、ダイアログ用の一意の識別子として「dialog_exit」ID を使用しています。

Kotlin

    showDialog(R.id.dialog_exit)
    

Java

    showDialog(R.id.dialog_exit);
    

同じアプリで、ダイアログを作成する際に「dialog_exit」ID を比較します。

Kotlin

    override fun onCreateDialog(id: Int): Dialog? {
        return when(id) {
            R.id.dialog_exit -> {
                ...
            }
            else -> {
                null
            }
        }
    }
    

Java

    protected Dialog onCreateDialog(int id) {
        Dialog dialog;
        switch(id) {
        case R.id.dialog_exit:
            ...
            break;
        default:
            dialog = null;
        }
        return dialog;
    }
    

整数

XML 内で定義された整数。

注: 整数は、name 属性で提供される値を使用して参照されるシンプルなリソースです(XML ファイルの名前を使用して参照されるわけではありません)。そのため、単一の XML ファイル内で、単一の <resources> 要素の下で、整数リソースを他のシンプルなリソースと組み合わせることができます。

ファイルの場所:
res/values/filename.xml
ファイル名は任意です。<integer> 要素の name がリソース ID として使用されます。
リソース参照:
Java の場合: R.integer.integer_name
XML の場合: @[package:]integer/integer_name
構文:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer
            name="integer_name"
            >integer</integer>
    </resources>
    
要素:
<resources>
必須。ルートノードにする必要があります。

属性はありません。

<integer>
整数。

属性:

name
文字列。整数の名前。これはリソース ID として使用されます。
例:

次の XML ファイルを res/values/integers.xml に保存するとします。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer name="max_speed">75</integer>
        <integer name="min_speed">5</integer>
    </resources>
    

次のアプリコードは、整数を取得します。

Kotlin

    val maxSpeed: Int = resources.getInteger(R.integer.max_speed)
    

Java

    Resources res = getResources();
    int maxSpeed = res.getInteger(R.integer.max_speed);
    

整数配列

XML 内で定義された整数の配列。

注: 整数配列は、name 属性で提供される値を使用して参照されるシンプルなリソースです(XML ファイルの名前を使用して参照されるわけではありません)。そのため、単一の XML ファイル内で、単一の <resources> 要素の下で、整数配列リソースを他のシンプルなリソースと組み合わせることができます。

ファイルの場所:
res/values/filename.xml
ファイル名は任意です。<integer-array> 要素の name がリソース ID として使用されます。
コンパイル済みリソースのデータ型:
整数の配列へのリソース ポインタ。
リソース参照:
Java の場合: R.array.integer_array_name
XML の場合: @[package:]array.integer_array_name
構文:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer-array
            name="integer_array_name">
            <item
                >integer</item>
        </integer-array>
    </resources>
    
要素:
<resources>
必須。ルートノードにする必要があります。

属性はありません。

<integer-array>
整数の配列を定義します。1 つまたは複数の子 <item> 要素を格納します。

属性:

android:name
文字列。配列の名前。この名前は、配列を参照するリソース ID として使用されます。
<item>
整数。この値は、別の整数リソースへの参照として設定することができます。この要素は、<integer-array> 要素の子要素にする必要があります。

属性はありません。

例:
次の XML ファイルを res/values/integers.xml に保存するとします。
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer-array name="bits">
            <item>4</item>
            <item>8</item>
            <item>16</item>
            <item>32</item>
        </integer-array>
    </resources>
    

次のアプリコードは、整数配列を取得します。

Kotlin

    val bits: IntArray = resources.getIntArray(R.array.bits)
    

Java

    Resources res = getResources();
    int[] bits = res.getIntArray(R.array.bits);
    

型付き配列

XML 内で定義された TypedArray。このリソースを使用すると、ドローアブルなど、他のリソースの配列を作成することができます。配列は同種である必要はなく、混合リソースタイプの配列を作成できます。ただし、TypedArrayget...() メソッドを使用して各アイテムを適切に取得できるように、どのデータ型が配列内のどこにあるのかを把握しておく必要があります。

注: 型付き配列は、name 属性で提供される値を使用して参照されるシンプルなリソースです(XML ファイルの名前を使用して参照されるわけではありません)。そのため、単一の XML ファイル内で、単一の <resources> 要素の下で、型付き配列リソースを他のシンプルなリソースと組み合わせることができます。

ファイルの場所:
res/values/filename.xml
ファイル名は任意です。<array> 要素の name がリソース ID として使用されます。
コンパイル済みリソースのデータ型:
TypedArray へのリソース ポインタ。
リソース参照:
Java の場合: R.array.array_name
XML の場合: @[package:]array.array_name
構文:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array
            name="integer_array_name">
            <item>resource</item>
        </array>
    </resources>
    
要素:
<resources>
必須。ルートノードにする必要があります。

属性はありません。

<array>
配列を定義します。1 つまたは複数の子 <item> 要素を格納します。

属性:

android:name
文字列。配列の名前。この名前は、配列を参照するリソース ID として使用されます。
<item>
汎用リソース。この値は、リソースまたはシンプルなデータ型への参照として設定することができます。この要素は、<array> 要素の子要素にする必要があります。

属性はありません。

例:
次の XML ファイルを res/values/arrays.xml に保存するとします。
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array name="icons">
            <item>@drawable/home</item>
            <item>@drawable/settings</item>
            <item>@drawable/logout</item>
        </array>
        <array name="colors">
            <item>#FFFF0000</item>
            <item>#FF00FF00</item>
            <item>#FF0000FF</item>
        </array>
    </resources>
    

次のアプリコードは、各配列を取得し、各配列の最初のエントリを取得します。

Kotlin

    val icons: TypedArray = resources.obtainTypedArray(R.array.icons)
    val drawable: Drawable = icons.getDrawable(0)

    val colors: TypedArray = resources.obtainTypedArray(R.array.colors)
    val color: Int = colors.getColor(0,0)
    

Java

    Resources res = getResources();
    TypedArray icons = res.obtainTypedArray(R.array.icons);
    Drawable drawable = icons.getDrawable(0);

    TypedArray colors = res.obtainTypedArray(R.array.colors);
    int color = colors.getColor(0,0);