繁体   English   中英

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

[英]How to randomly Display Images from ArrayList<Integer>

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

这就是我初始化数组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),并且Array将随机显示图像,直到总数为50。但是现在,我只是试图将图像转换为显示在画布上。

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

感谢任何帮助

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

您遵循的是这样的答案,但是您没有在列表上使用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()方法上进行所有计算。 您可能希望将除图形之外的所有内容移到方法之外。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM