昨天刚开始摸索Surface这个东西,在用到 lockCanvas(Rect dirty)这个接口的时候一直没有出来自己想要的效果,网上搜了一下不得要领,后来看到“双缓冲”这几个字突然蹦出来一丝灵感,加以实践,最终证实了自己的猜想。
lockCanvas(null),就是锁住整张画布,绘画完成后也更新整张画布的内容到屏幕上,这个没有什么疑惑。而 lockCanvas(Rect dirty)就是锁住画布中的某个区域,绘画完成后也只更新这个区域的内容到屏幕。使用后一接口的初衷是只更新必要的画面内容以节省时间,提高程序运行的效率,适用于大动态画面的场景。
然而,在实际使用lockCanvas(Rect dirty) 时却发现它似乎也是要更新完整个屏幕的,比如我在第一帧的时候画了整个画面,然后按下了某一按钮,于是在画第二帧时就只想更新那个按钮区域的图像,但结果却是这样子的:
---------------------
作者:gymsun
来源:CSDN
原文:https://blog.csdn.net/gymsun/article/details/8516823
版权声明:本文为博主原创文章,转载请附上博文链接!