【发布时间】:2014-12-14 18:23:44
【问题描述】:
我正在尝试在 TextureView 中绘制越来越多的圆圈。所有圆的中心都相同。然后我尝试增加绘制的圆圈,直到达到特定限制。然后我想清除画布并重新开始。但是使用我的代码(见下文),画布似乎永远不会被清除。实际上当它应该被清除时它会很快闪烁白色,但是当下一个循环中的第一个圆圈被绘制时(在尝试清除画布之后),所有以前的圆圈重新出现并且整个动画似乎变得疯狂。让它运行几秒钟后,我留下了几十个圆圈(有些重叠),而不是每个周期只有大约 4 个。此外,它们没有我给它们的半径(基本上我的代码最终绘制了许多随机大小的圆圈)。花了几天时间尝试不同的东西,但似乎没有任何帮助。
这是我的代码:
paint.setColor(Color.argb(opac, 177, 177, 177));
stroke = 5;
paint.setStrokeWidth(stroke);
radius = 10;
Canvas canvas = new Canvas();
Boolean clear = false;
//Added these two lines following advice from a previous answer:
Paint clearPaint = new Paint();
clearPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
while (mRunning && !Thread.interrupted()) {
canvas = mSurface.lockCanvas(null);
try {
if(clear){
canvas.drawPaint(clearPaint); //This line should clear the canvas.
clear = false;
}else{
canvas.drawCircle(circleX, circleY, radius, paint);
}
} finally {
mSurface.unlockCanvasAndPost(canvas);
}
if(radius+15 <= circleY-stroke/2){
radius+=15;
}else{
radius = 10;
clear = true;
}
try {
Thread.sleep(360);
} catch (InterruptedException e) {
// Interrupted
}
如果有人可以在这里帮助我,我将不胜感激。由于这个问题,我已经有好几个星期无法继续我的项目了。
【问题讨论】:
标签: java android graphics android-canvas