我正在尝试从数组中随机显示图像。画布正在渲染,但我的图像根本没有显示在画布上。我的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和。
答案 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()
方法进行所有计算。您可能希望移动除方法之外的所有内容。