157

XML 値ファイルを使用して、ドローアブル リソースの ID をR.drawable.*配列内の形式で保存し、アクティビティで配列を取得したいと考えています。

これを達成する方法のアイデアはありますか?

4

5 に答える 5

377

次のようなフォルダー内のファイルで型付き配列を使用します。arrays.xml/res/values

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <integer-array name="random_imgs">
        <item>@drawable/car_01</item>
        <item>@drawable/balloon_random_02</item>
        <item>@drawable/dog_03</item>
    </integer-array>

</resources>

次に、アクティビティで次のようにアクセスします。

TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs);

// get resource ID by index, use 0 as default to set null resource
imgs.getResourceId(i, 0)

// or set you ImageView's resource to the id
mImgView1.setImageResource(imgs.getResourceId(i, 0));

// recycle the array
imgs.recycle();
于 2011-08-04T17:24:22.697 に答える
16

これを使用して、ドローアブルなどの他のリソースの配列を作成できます。配列は同種である必要はないので、リソース タイプが混在する配列を作成できますが、データ タイプが配列内のどこに何があるのか​​を認識しておく必要があることに注意してください。

 <?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>

そして、このようなアクティビティでリソースを取得します

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);

楽しみ!!!!!

于 2015-07-07T16:24:03.520 に答える