敲android还没多久,对于这种问题真的很苦手
我的思路是,定义一个Position类,里面有left top两个属性,再定义一个ArrayList数组,在每次random一个bitmap的坐标后,用Position对象存它的left top值,然后再遍历当前的ArrayList,如果新的坐标值和数组中的坐标值产生冲突(就是坐标在能与现有坐标重叠的范围内),我就返回false,重复上述步骤,一直到找到符合条件的坐标
代码是以下:
Position zero = new Position(0, 0);
positions.add(zero);
Random random = new Random();
int count = 0;
while (count<index.length){//这个index是一个int数组
int left = random.nextInt(screen_width-105);
int topp = random.nextInt(screen_height-105);
Position position = new Position(left, topp);
if (position.isEmpty()) {
canvas.drawBitmap(activity.imgs[count], left, topp,new Paint());
count++;
positions.add(position);
}
}
Position的定义是这样的:
class Position{
private int left;
private int top;
public Position(int left, int top){
this.left = left;
this.top = top;
}
public int getLeft(){return left;}
public int getTop(){return top;}
public void setLeft(int left){
this.left = left;
}
public void setTop(int top){
this.top = top;
}
//获取屏幕的
public boolean isEmpty(){//每张图片大小都是105*105,
if (top<438||top>245){return false;}//这里是禁止绘制区域
for (Position p : positions){
if (top<438||top>245){
return false;
}else if (
left>(p.left-120)&&
left<(p.left+120)&&
top>(p.top-120)&&
top<(p.top+120)
){
return false;
}
}
return true;
}
运行是屏幕一片漆黑,就宛如我这个菜鸟脆弱的心。。。。
其实绘制出来过,但是还是好多重叠,后来我发现条件判断那儿好像不对,就把循环条件给改了,然后就黑了