Androidで様々な配列をリソースとして定義する

Androidでは文字列などのリソースをxmlで定義することができる。xmlで定義しておくとディレクトリ名のポストフィックスを利用して(valuesとvalues-jaなど)簡単に多言語対応できるのが便利。

このリソースファイルでは文字列だけでなく、配列も定義できるのでコードの外に出せるものはできるだけxmlに書き出しましょう。

下記、resourceの記述方法とjavaからの参照方法。string, integerはそれぞれ専用のタグ名、アクセスメソッドがある。その他のリソースはで定義しTypedArrayで受ける。

文字列配列
  • .xml
<string-array name="sample_names">
	<item>foo</item>
	<item>bar</item>
	<item>baz</item>
</string-array>
  • java
String[] names = getResources().getStringArray(R.array.sample_names);
int配列
  • .xml
<integer-array name="sample_ids">
	<item>1</item>
	<item>2</item>
	<item>3</item>
</integer-array>
  • .java
int[] ids = getResources().getStringArray(R.array.sample_ids);
Drawable配列
  • .xml
<array name="sample_images">
	<item>@drawable/title</item>
	<item>@drawable/logo</item>
	<item>@drawable/icon</item>
</array>
  • .java
TypedArray images = getResources().obtainTypedArray(R.array.sample_images);
Drawable drawable = images.getDrawable(0));
Color配列
  • xml
<array name="sample_colors">
	<item>#FFFF0000</item>
	<item>#FF00FF00</item>
	<item>#FF0000FF</item>
</array>
  • java
TypedArray colors = getResources().obtainTypedArray(R.array.sample_colors);
int color = colors.getColor(0,0);