如何在android中初始化位图数组?

时间:2014-01-27 09:21:38

标签: android bitmap

我是android开发的新手。我正在开发一款游戏。它有20张图像名称像num1,num2,num3 ..,num20的图像。

为了阅读所有这些图像,我已经在java中完成了这个

for ( int i=0 ; i<n ; i++)
{
imgarr[i] = Toolkit.getDefaultToolkit().getImage( this.getClass().getResource("images/"+(i+1)+".png"));
}

我的问题是如何在android中做同样的事情?

如何在简单的for循环中将所有这些图像读入位图数组?

我知道在android中我们可以将图像作为fallows读入位图

img = BitmapFactory.decodeResource(getResources(), R.drawable.image_name);

有没有办法在for循环中读取所有这些图像?

感谢。

4 个答案:

答案 0 :(得分:1)

您可以构建一个自定义数组,其中包含图像的所有资源ID并使用for循环

例如:

int ids[] = new int[]{R.id.img1, R.id.img2};
for(int id : ids) {
    img = BitmapFactory.decodeResource(getResources(), id);
}

答案 1 :(得分:1)

你可以这样做:

    for(int i = 0; i < count; i++){
        try{
            Class drawable = R.drawable.class;
            Field f = drawable.getField("num" + i);
            int id = f.getInt(null);
            img = BitmapFactory.decodeResource(getResources(), id);
        }catch(Exception ex){
        }
    }

但这是一种糟糕的方式。您可以使用Assets文件夹。

答案 2 :(得分:0)

这样做

List<Bitmap> imgList = new ArrayList<Bitmap>();

        for ( int i=1 ; i<=n ; i++)
        {
            imgList.add(BitmapFactory.decodeResource(getResources(), getResources().getIdentifier("num" + i, "drawable", getPackageName()))); 
        }

答案 3 :(得分:0)

像这样定义一个image-id数组

int[] ImgArr = {R.drawable.image1, R.drawable.image2....};

然后你可以像这样迭代:

for ( int i=0 ; i<n ; i++)
{
 img = getResources().getDrawable(ImgArr [n]);
}