web-dev-qa-db-ja.com

リソースIDの整数配列の作成

_res/drawable_フォルダーにいくつかの画像があります。 _img1.png_、_img2.png_、_img3.png_としましょう。現在、これらの画像IDの整数配列をJavaのように作成しています

_int[] imgIds = {R.drawable.img1, R.drawable.img2, R.drawable.img3};
_

代わりに、_res/values_ファイル(たとえば_strings.xml_)のいずれかに整数配列を作成することは可能ですか?

_<integer-array name="img_id_arr">
    <item>@drawable/img1</item>
    <item>@drawable/img2</item>
    <item>@drawable/img3</item>
</integer-array>
_

次に、Java経由でgetResources().getIntArray(R.array.img_id_arr)?でアクセスします。

60

「整数配列」の代わりに「配列」のみを使用します。開発者ガイドの Typed Array を参照してください。

65
resnbl

XML整数配列、リソース参照、getIntArray を参照してください

TypedArray ar = context.getResources().obtainTypedArray(R.array.my_array);
int len = ar.length();
int[] resIds = new int[len];
for (int i = 0; i < len; i++)
    resIds[i] = ar.getResourceId(i, 0);
ar.recycle();
// Do stuff with resolved reference array, resIds[]...
for (int i = 0; i < len; i++)
    Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(resIds[i]));
48
Joe Bowbeer

LevelListDrawable を作成します。それはまさにあなたが望むものではありませんが、かなり達成可能です。

2
xandy