12

ドローアブルフォルダには多くの画像があるので、代わりにすべての画像リソースIDの配列を手動で作成し、配列内のドローアブルフォルダのすべての画像を動的に取得したいと思います。現在、このコードを使用しています:

for(int i=1;i<=9;i++)
    {
            int imageKey = getResources().getIdentifier("img"+i, "drawable", getPackageName());
            ImageView image = new ImageView(this);  
            image.setId(imgId);
            image.setImageResource(imageKey);    
            image.setScaleType(ImageView.ScaleType.FIT_XY);
            viewFlipper.addView(image, new LayoutParams(LayoutParams.FILL_PARENT,              LayoutParams.FILL_PARENT));
            imgId++;
        }

しかし、そのコードでは、リソースIDを取得するために画像名を手動で編集する必要がありますが、任意の名前のすべての画像を取得したいと思います。

4

2 に答える 2

20

これを達成するために使用できますReflection

Fieldクラスをインポートする

import java.lang.reflect.Field;

そして、これをコードに記述します

Field[] ID_Fields = R.drawable.class.getFields();
int[] resArray = new int[ID_Fields.length];
for(int i = 0; i < ID_Fields.length; i++) {
    try {
        resArray[i] = ID_Fields[i].getInt(null);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

resArray[]アプリケーション内のすべてのドローアブルへの参照を保持するようになりました。

于 2012-09-05T05:50:08.320 に答える
8

イメージ名が img1、img2 などの場合、次のような変数を作成できます。

String url = "drawable/"+"img"+i;

int imageKey = getResources().getIdentifier(url, "drawable", getPackageName());

getPackageName() メソッドを「com.android.resource」のようなパッケージ名に置き換えることもできます。
簡単に言えば、一般的な機能は次のとおりです。

public int getIdentifier(String name, String defType, String defPackage)
于 2012-09-05T05:44:30.737 に答える