我正在使用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();
}
}
答案 0 :(得分: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);
如果您希望采用其他方式编码较少,请参阅Other Example
上的已接受答案