Android SurfaceHolder的lockCanvas方法

我首先Rect mRect = new Rect(0,0,47,65);
然后Canvas mCanvas = holder.lockCanvas(mRect);
我通过debug发现,当执行完lockCanvas后,mRect的left、top、right、bottom值变成了0,0,320,480。
各位大虾们,求解释。。。

Surface由于采用了双缓冲,防止脏矩形出现就是刷新不到的地方存在,你设置的这个小Rect会被resize,机制决定

lock的是整个view的大小,也就是说,你view里ondraw来用canvas绘制,那这个canvas对应的lock就是整个view。

SurfaceHolder, lockCanvas后就是获得canvas的大小并锁定canvas。canvas就是surface的大小,大部分情况下和手机分辨率一样大。mRect的值是正确的,就是你要获取的canvas的位置和大小。

lock的是整个view的大小,也就是说,你view里ondraw来用canvas绘制,那这个canvas对应的lock就是整个view。