その他のリソースタイプ

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

ブール値
ブール値を扱う 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 として使用されます。
例:
res/values-small/bools.xml に保存された 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 として使用されます。
例:
res/values/colors.xml に保存された 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 として使用されます。
例:
res/values/dimens.xml に保存された 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 の一意の名前。
例:

res/values/ids.xml に保存された 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 として使用されます。
例:

res/values/integers.xml に保存された 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> 要素の子を指定する必要があります。

属性はありません。

例:
res/values/integers.xml に保存された 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> 要素の子要素にする必要があります。

属性はありません。

例:
res/values/arrays.xml に保存された 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);