我的活动中有surfaceview
。最初使用
Canvas c = SurfaceView.getHolder().lockCanvas();
和
SurfaceView.getHolder().unlockCanvasAndPost(c);
后来我想在surfaceview
的很小一部分上画画。我不想重绘整个surfaceview
。是否可以只更新所需的部分?
答案 0 :(得分:1)
请改用lockCanvas(Rect dirty)
。通过你想要重绘的区域。
请注意,dirty
是输入输出参数。可以扩展Rect以覆盖更大的区域,您需要设置它覆盖的每个像素。因此,如果(例如)SurfaceView不再能够访问前面的像素,它会扩展Rect以覆盖整个表面。
由于SurfaceView是双缓冲或三缓冲,因此实现将复制前一缓冲区中的像素块。由于您从SurfaceView获得的Canvas永远不会硬件加速,因此指定脏矩形通常会获得性能。