SurfaceView双缓冲机制

本文详细解释了缓冲的概念,包括无缓冲、单缓冲和双缓冲绘图,并对比了surfaceView与View在缓冲机制上的区别,强调了双缓冲机制在提高绘图效率和避免界面卡顿方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是缓冲?

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

缓冲的种类:

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

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

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

surfaceView缓冲和View缓冲的区别:

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

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

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

surfaceView为什么比view好用?

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值