SurfacView的使用及数据缓冲机制

在将原本在手机上流畅运行的项目移植到平板电脑时,由于分辨率提升但CPU性能未同步增强,导致性能下降。为解决这个问题,采用了SurfaceView结合Bitmap绘制的方式,以提高效率。SurfaceView的生命周期由surfaceCreate、surfaceChange和surfaceDestroy控制,适用于高效无限制滑动的容器。在SurfaceView中创建单独的绘制线程,并利用环形Buffer进行数据管理,确保数据获取和绘制的分离,避免耗时操作影响性能。这种方法在Android应用开发中表现出色,尤其涉及图形图像和数学算法的计算。
摘要由CSDN通过智能技术生成

最近在做一个项目,原来在手机运行非常流畅的代码移植到平板电脑中,运行就感觉明显很卡, 原因是平板电脑的分辨率是手机的两倍,而CPU还远达不到手机的两倍。原来采用ViewGroup的形式,就不得采用绘制到Bitmap的做法, 绘制到Bitmap这种做法,已经成Android绘制各种特效的常规做法了。 但是绘制到Bitmap,相对ViewGroup有很多不足的地方: 1. 不灵活, 不像ViewGroup的形式,可以采用XML布局的形式。ViewGroup做法的移植性相对来说更好些。 2.. 按键响应控制, 每个View都有自己的事件响应方法,而采用Bitamp绘制,不得根据区域来判断响应事件。但是基于效率考虑,不得不采用在SurfaceView中用绘制Bitmap的方法,来达到无限制数量的左右滑动容器(类似gallery)的效果。 其实,目前android很多的应用都是采用这种方式来做的,比如所有流行的电子书阅读界面。

       SurfaceView绘制效率高,就是Android 提供一个让我们直接可以绘制的Buffer。

       控制SurfaceView的生命周期有三个函数 surfaceCreate,sufaceChange, surfaceDestroy. surfaceChange一般用于处理横竖屏幕切换。

       我的做法是:

1. 创建一个绘制线程, 

ThreaddrawThread = new Thread {

       public void run () {

               do  {

                     // Canvas 绘制

                     // wait() 线程等待 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值