0

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

这就是我初始化数组的方式 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);

    }
}

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

我是 Android 开发新手,但正在使用这个线程来帮助android 如何从十个图像数组中随机获取 4 个图像数组

感谢任何帮助

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

4

1 回答 1

0

您正在遵循那个 SO 答案,但您没有在 List 上使用 Shuffle 方法,而是执行双循环来重新排序数字。

您的图像未在画布上绘制的原因是因为您从不绘制它们。您创建列表并随机化这些值,但您从未在 Canvas 上绘制它们。

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

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()方法进行所有计算。您可能希望将除绘图之外的所有内容移到方法之外。

于 2013-11-03T06:46:11.630 回答