现在的位置: 首页 > 综合 > 正文

Android 的 SurfaceView 双缓冲应用

2013年08月20日 ⁄ 综合 ⁄ 共 616字 ⁄ 字号 评论关闭

双缓冲是为了防止动画闪烁而实现的一种多线程应用,基于SurfaceView的双缓冲实现很简单,开一条线程并在其中绘图即可。本文介绍基于SurfaceView的双缓冲实现,以及介绍类似的更高效的实现方法。 

本文程序运行截图如下,左边是开单个线程读取并绘图,右边是开两个线程,一个专门读取图片,一个专门绘图:

对比一下,右边动画的帧速明显比左边的快,左右两者都没使用Thread.sleep()。为什么要开两个线程一个读一个画,而不去开两个线程像左边那样都 “边读边画”呢?因为SurfaceView每次绘图都会锁定Canvas,也就是说同一片区域这次没画完下次就不能画,因此要提高双缓冲的效率,就得开一条线程专门画图,开另外一条线程做预处理的工作。

 

 

[代码] main.xml

01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
03     android:layout_width="fill_parent"android:layout_height="fill_parent"
04     android:orientation="vertical">
05  
06     <LinearLayout android:id="@+id/LinearLayout01"

抱歉!评论已关闭.