Java Android中无getIdentifier的资源动态命名

Java Android中无getIdentifier的资源动态命名,java,android,opengl-es,Java,Android,Opengl Es,我正在使用OpenGL ES在Android中制作一个游戏。我从一个教程中得到了一些代码,我正试图修改它以适应我的应用程序,但我遇到了一个问题。我希望使用传递到函数中的字符串作为资源名称来动态获取图像资源。我知道在这种情况下通常使用getIdentifier(),但这会返回一个int,我需要一个输入流。有没有办法从资源中动态获取输入流 或者,有没有更好的方法 代码如下: InputStream is = mContext.getResources().openRawResource(R.draw

我正在使用OpenGL ES在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();
      }
}
InputStream is=mContext.getResources().openRawResource(R.drawable.);
位图;
试一试{
位图=BitmapFactory.decodeStream(is);
}
最后{
试一试{
is.close();
} 
捕获(IOE异常){
e、 printStackTrace();
}
}

是,您可以假设您的图像存储在drawable中,命名为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);

如果你想用编码比在

上看到接受答案更少的其他方法,那么我如何从中获取输入流,因为我需要它来制作位图?我已经更新了我的答案,请检查它