SurfaceView双缓冲机制

版权声明:个人见解,希望可以帮助大家,共同进步. https://blog.csdn.net/weixin_40783315/article/details/83866631

什么是缓冲?

在我们的界面中图形都是在画布上绘制出来的,所以这个绘制的过程就叫缓冲,而画布也就可以称作缓冲区。

缓冲的种类:

无缓冲:不使用画布的情况下直接在窗口上进行绘图就叫做无缓冲绘图。

单缓冲:用了一个画布,将所有的内容先绘制到画布上,再整体绘制到窗口,这个就叫做单缓冲绘图。

双缓冲:用了两个画布,一个进行临时的绘图,一个进行最终的绘图,这样的就叫做双缓冲绘图。

surfaceView缓冲和View缓冲的区别:

surfaceView:通过 surfaceHolder.lockCanvas 锁定画布,实现下一张图片的绘制,再通过另外的线程刷新界面,绘制图片。

View:直接在ondraw里绘制图片,刷新界面。

ps:其实view也能实现双缓冲,我们可以在另一个ondraw里绘制下一张bitmap,或者另开一个线程去处理绘图以外的操作,从而实现view的双缓冲。

surfaceView为什么比view好用?

View是在UI主线程中进行绘制的,绘制时会阻塞主线程,如果onTouch处理的事件比较多的话会导致界面卡顿。而surfaceView是另开了一个线程绘制的,再加上双缓冲机制,所以要比view高效并且界面不会卡顿。

以上就是我对双缓冲机制的理解如果有不足的地方欢迎各位大佬指导~

猜你喜欢

转载自blog.csdn.net/weixin_40783315/article/details/83866631
今日推荐