我在其OnTouch事件上在SurfaceView上绘制圆圈。这是代码
public class DrawableSurface extends SurfaceView {
public DrawableSurface(Context context) {
super(context);
surfaceHolder = getHolder();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL);
/*Handler handler = new Handler();
handler.postDelayed(new Bubbles(handler) ,1000);*/
}
private final SurfaceHolder surfaceHolder;
private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE)
{
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawCircle(event.getX(), event.getY(), 50, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
return true;
}
}
每当绘制一个新形状时,一些已绘制的形状就会消失。不是全部,但其中一些消失了。有时他们会回来。我无法理解。为什么会这样?
答案 0 :(得分:0)
SurfaceView Surface是双缓冲或三缓冲。当缓冲区翻转时,你会看到东西消失并重新出现。
您需要更新每个帧上绘图区域中的每个像素。您可以通过将Rect传递给lockCanvas()
来限制更新的像素数。有关详细信息,请参阅lockCanvas()
documentation。