0

我正在使用 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();
      }
}
4

1 回答 1

1

是的,你可以假设你将图像存储在 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);

如果您想要其他方式的编码少于在其他示例中看到接受的答案

于 2012-06-30T12:03:23.483 回答