2011-02-04 52 views
3

我正在尋找一個很好的程序化方式,我可以用它來引用位圖[]中的圖像。Android,想要在字符串中使用字符串引用位圖,編程

此刻,我宣佈了一堆整數班裏

Bitmap[] mBmp = new Bitmap[6]  
int image1 = 0, image2 = 1, image3 = 2, someimage = 3, otherimage = 4, yetanoimage = 5; 

然後我把它們稱爲如下:

mBmp[someimage] ... 

然而,這是低效的,我想提一下(優選地)根據它們的文件名(減去擴展名)或一些其它唯一的標識符,而不是可以通過編程方式確定。

這樣做的原因是:

  1. 圖像的數量是任意的
  2. 文件名是任意
  3. 我想的過程作爲模板自動化。

回答

2

您是否必須使用數組?你爲什麼不用Hashtable來存儲你的位圖?這樣你可以使用他們的(唯一的)文件名作爲他們的標識符來獲取它們。

按照本例中,將位圖:

Hashtable<String, Bitmap> bitmaps = new Hashtable<String, Bitmap>(); 
numbers.put("one_image", bitmap1); 
numbers.put("image_two", bitmap2); 
numbers.put("beach_house", bitmap3); 

和打水位圖:

bitmap = bitmaps.get("beach_house"); 
+0

實際上,我使用數組的原因是因爲我引用了我的圖像文件名(對於唯一文件或系列中的第一個)和索引(針對一系列中唯一命名的第一個)。有地圖的作品,但我已經實現它的方式不同,把它的數組中的位圖索引放入哈希映射中,而不是位圖本身。 – Hamid 2011-02-04 15:36:46

3

我的建議是把你的圖像轉換成一個HashMap。一個Map就像一個數組,但有一個對象作爲鍵。在這種情況下,我建議你使用一個String對象作爲鍵。 Map是集合類型,HashMap是Map的一個實現。

要創建一個HashMap你會做這樣的事情:

Map<String, Bitmap> myPictures = new HashMap<String, Bitmap>(); 

插入一張圖片:

String fileName = "somefileName"; 
Bitmap bitmap = Bitmap bitmap = BitmapFactory.decode(fileName) 
myPictures.put(fileName, bitmap) 

檢索位圖就可以完成,像這樣:

Bitmap myBitmap = myPictures.get(filename) 

您可以通過執行遍歷位圖:

for(Bitmap bitmap : myPictures.values()){ 
    display(bitmap); 
} 
相關問題