2011-02-04 78 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); 
}