【发布时间】:2015-01-19 22:04:52
【问题描述】:
我使用标准的 Android 画布和黑色作为背景。我希望它随机生成白色矩形并垂直和水平移动它们。
我希望这个问题是明确和可行的。
【问题讨论】:
我使用标准的 Android 画布和黑色作为背景。我希望它随机生成白色矩形并垂直和水平移动它们。
我希望这个问题是明确和可行的。
【问题讨论】:
当然,创建一个包含一堆随机生成的矩形信息的类。当您随机生成一个新的时,您将希望使用后台线程来执行此操作。使现在存在矩形的视图部分无效。
为视图重载 onDraw(Canvas canvas) 函数并拥有它,每次调用时绘制所有白色矩形。
ArrayList<RectF> rectangles;
Paint rectanglePaint;
public void addRectangle(RectF addRectangle) {
if (rectangles == null) rectangles = new ArrayList<>();
rectangles.add(addRectangle);
this.invalidate((int)addRectangle.left-1,(int)addRectangle.top-1, (int)addRectangle.right+1, (int)addRectangle.bottom+1);
}
public void translateRectangle(int index, float dx, float dy) {
if (rectangles == null) return;
RectF rect = rectangles.get(index);
this.invalidate((int)rect.left-1,(int)rect.top-1, (int)rect.right+1, (int)rect.bottom+1);
rect.set(rect.left+dx, rect.top +dy, rect.right+dx, rect.left+dy);
this.invalidate((int)rect.left-1,(int)rect.top-1, (int)rect.right+1, (int)rect.bottom+1);
}
@Override
public void onDraw(Canvas canvas) {
if (rectangles == null) return;
for (RectF rect : rectangles) {
canvas.drawRect(rect, rectanglePaint);
}
}
在视图中的某个地方覆盖 onDraw(),记得为 rectanglePaint 声明绘制并将其设置为白色或其他。但这就是代码。保存一些后台线程或一些东西来做随机调用 addRectangle();
【讨论】:
创建白色油漆
Paint white=new Paint();
white.setColor(Color.WHITE);
覆盖 onDraw(Canvas)
public void onDraw(Canvas c){
//if you want more, write a for loop here c.drawRect(0,0,System.currentTimeMillis()%500,System.currentTimeMillis()%500,white);
// every time you invalidate this view, the rectangles will change their positions
}
【讨论】: