2011-11-23 57 views
2

我在我的res/drawable文件夾中有我的圖像,這是沒有問題的。 的事情是,我希望能夠做這樣的事情:Android Java,位圖來自資源

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.*img[contar]*); 

換句話說日食不會讓我做這件事img[contar]它只接受圖像文件示例(具體名稱: crystalblue),我想讓我們說從「crystalblue」移動到「crystalred」的形象,在我的情況下,我需要一個變量來做到這一點。

Obs:我沒有聲明img爲字符串數組。

任何解決方案的人?

回答

6

你不能'連接一半的變量名與運行時數據。編譯器無法知道你實際想要傳遞什麼變量。

你必須做的事情是這樣的:

int resourceId = 0; 
if(someCondition){ 
    resourceId = R.drawable.someimage; 
}else{ 
    //other logic for picking the right image here 
} 

mBitmap = BitmapFactory.decodeResource(getResources(), resourceId); 

你也可以使用反射來找到具有該值的字符串數組中匹配的名稱R類中的字段,然後做一個「搞定」呼籲對填充RESOURCEID:

Class rClass = R.drawable.class; 
Field resourceConstant =rClass.getField(img[contar]);  
int resourceId = resourceConstant.getInt(null); //since it's a static field, pass null here 
mBitmap = BitmapFactory.decodeResource(getResources(), resourceId); 
+0

是的,你」再右吧。我想告訴我這樣做的方式,但我沒有足夠的聲譽,所以我會在5小時後回答這個問題!大聲笑 – bunnyannihilator89

1

也許某種這可以有助於:(IMG [康特例如是「紅色」或「藍色」)

int id = context.getResources().getIdentifier("crystal"+img[contar], "drawable", context.getPackageName()); 
    if(id!=0) 
     someImageView.setImageResource(id); 
    else 
     someImageView.setImageBitmap(null); 

或得到位圖

mBitmap = BitmapFactory.decodeResource(context.getResources(),id) 
0

哇!我剛剛發佈了這個,反應非常快! 我幾天後纔會回答!非常感謝。 其實我設法找到解決辦法了由我自己來這裏之前,這裏就是我現在明白了,例如:

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.crystalblue); 

這裏這部分「R.drawable.crystalblue」意味着它去生成的文件「R」,在「可繪製」下,它查找「crystalblue」的值,這恰好是「int」類型的值。

所以我所做的就是,我把這些值(代表我想要的圖像),並把它們放在一個int數組:

int imgRef[] = {0x7f020000, 0x7f020002, 0x7f020003, 0x7f020004, 0x7f020005, 0x7f020006}; 

最後:

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), imgRef[count]);