如何从ArrayList <integer> </integer>中随机显示图像

时间:2013-11-03 03:00:02

标签: java android arrays android-canvas drawable

我正在尝试从数组中随机显示图像。画布正在渲染,但我的图像根本没有显示在画布上。我的Drawables标题是“一,二,三,四,五”

这是我初始化我的数组的方式  int[] array1;

这是我的转换功能

public static int[] convertIntegers(List<Integer> integers) {
    int[] ret = new int[integers.size()];
    Iterator<Integer> iterator = integers.iterator();
    for (int i = 0; i < ret.length; i++) {
        ret[i] = iterator.next().intValue();
    }
    return ret;
}

这是我的渲染方法。画布显示但图像没有显示,我没有任何错误。

public void render(Canvas canvas) {

    if (canvas != null) {
        canvas.drawRGB(234, 237, 235);


     ArrayList<Integer> list = new ArrayList<Integer>();

        Random random = new Random();

        int[] images = new int[] { R.drawable.one, R.drawable.two,
                R.drawable.three, R.drawable.four, R.drawable.five };

        for (int i = 0; i < 5; i++) { 

            while (true) {
                int next = random.nextInt(5);
                if (!list.contains(next)) {
                    list.add(images[next]);
                    break;
                }
            }
        }

        array1 = convertIntegers(list);

    }
}

我希望Array在整个视图中随机显示图像。最终我希望每个图像都具有其名称的int值(即drawable“one”将具有值1)并且Array将随机显示图像,直到总数为50.但是现在我只是想将图像添加到在画布上显示。

我是Android dev的新手,但是正在使用这个帖子来帮助android how to get 4 images in array from ten array of image randomly

感谢任何帮助

编辑:不确定这是否有帮助,但我在我的MainGamePanel活动中使用SurfaceView和。

1 个答案:

答案 0 :(得分:0)

你正在关注那个SO答案,但是你没有在List上使用Shuffle方法,而是做一个双循环来重新排序数字。

您的图像未在“画布”上绘制的原因是您从未绘制它们。您可以创建列表并随机化值,但不要在“画布”上绘制它们。

你得到数组后你应该这样做(我没有测试它,但应该与此类似):

int x = 0;
int y = 0;
for (int i=0; i<array.length; i++) {
  Bitmap bmp = BitmapFactory.decodeResource(getResources(), array1[i]);            
  canvas.drawBitmap(bmp, x, y, null);
  x += bmp.getWidth();
}
编辑:我刚刚意识到你正在对onRender()方法进行所有计算。您可能希望移动除方法之外的所有内容。