在Android SurfaceView上绘制新形状时,为什么绘制的形状会消失?

时间:2015-09-10 20:49:34

标签: android drawing android-canvas surfaceview

我在其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;
    }
}

每当绘制一个新形状时,一些已绘制的形状就会消失。不是全部,但其中一些消失了。有时他们会回来。我无法理解。为什么会这样?

1 个答案:

答案 0 :(得分:0)

SurfaceView Surface是双缓冲或三缓冲。当缓冲区翻转时,你会看到东西消失并重新出现。

您需要更新每个帧上绘图区域中的每个像素。您可以通过将Rect传递给lockCanvas()来限制更新的像素数。有关详细信息,请参阅lockCanvas() documentation