0

私はOpenGLESを使用してAndroidでゲームを作成しています。チュートリアルからコードを取得し、アプリに合わせてコードを変更しようとしていますが、問題が発生しています。関数に渡された文字列をリソース名として使用して、画像リソースを動的に取得したいと思います。この場合、通常getIdentifier()を使用することは知っていますが、これはintを返し、入力ストリームが必要です。リソースから入力ストリームを動的に取得する方法はありますか?

あるいは、これを行うためのより良い方法はありますか?

以下のコード:

InputStream is = mContext.getResources().openRawResource(R.drawable.<imagename>);

Bitmap bitmap;
try {
      bitmap = BitmapFactory.decodeStream(is);
}
finally {
      try {
            is.close();
      } 
      catch (IOException e) {
            e.printStackTrace();
      }
}
4

1 に答える 1

1

はい、最初に次のような配列を作成するよりも、img1、img2、img3、img4、img5、img6、img7という名前の画像をドローアブルに保存するとします。

String[] imgarray={"img1","img2","img3","img4","img5","img6","img7"};
public static String PACKAGE_NAME ;
PACKAGE_NAME=getApplicationContext().getPackageName();
Random r = new Random();
int n=r.nextInt(imgarray.length());
int resID = getResources().getIdentifier( PACKAGE_NAME+":drawable/" +imgarray[n] , null, null);  
imageview.setImageResource(resID);

行の下に追加するよりもビットマップ画像が必要な場合

Bitmap  bm = BitmapFactory.decodeResource(getResources(),resID);

他の例で受け入れられた答えを参照するよりも少ないコーディングで他の方法が必要な場合

于 2012-06-30T12:03:23.483 に答える