2012-06-30 2 views
0

Я использую OpenGL ES для игры на Android. У меня есть код из учебника, и я пытаюсь изменить его в соответствии с моим приложением, но у меня проблема. Я хочу динамически получить ресурс изображения, используя строку, переданную в функцию в качестве имени ресурса. Я знаю, как правило, вы используете getIdentifier() в этом случае, но это возвращает int, и мне нужен поток ввода. Есть ли способ получить поток данных из ресурса динамически?Динамическое именование ресурсов в Android без getIdentifier

В качестве альтернативы, есть ли лучший способ сделать это?

код ниже:

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

Я обновил свой ответ, проверив его – Khan

ответ

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

+0

Как получить поток ввода от этого, так как мне нужно его создать Bitmap? –

+0

Удивительный, работал как шарм. Ура! –

Смежные вопросы