如何部分更新surfaceview?

时间:2014-04-17 21:46:53

标签: android android-canvas surfaceview

我的活动中有surfaceview。最初使用

绘制一些圆圈
Canvas c = SurfaceView.getHolder().lockCanvas();

SurfaceView.getHolder().unlockCanvasAndPost(c);

后来我想在surfaceview的很小一部分上画画。我不想重绘整个surfaceview。是否可以只更新所需的部分?

1 个答案:

答案 0 :(得分:1)

请改用lockCanvas(Rect dirty)。通过你想要重绘的区域。

请注意,dirty是输入输出参数。可以扩展Rect以覆盖更大的区域,您需要设置它覆盖的每个像素。因此,如果(例如)SurfaceView不再能够访问前面的像素,它会扩展Rect以覆盖整个表面。

由于SurfaceView是双缓冲或三缓冲,因此实现将复制前一缓冲区中的像素块。由于您从SurfaceView获得的Canvas永远不会硬件加速,因此指定脏矩形通常会获得性能。