Android SurfaceView双缓存
来源:互联网 发布:手机淘宝登陆连接失败 编辑:程序博客网 时间:2024/06/14 02:34
SurfaceView实现了2个缓存,绘图的时候会先绘制到一个缓存,绘制下一张图的时候,则绘制到另一缓存,这样轮流切换。
缓存绘制完了就拿去显示,缓存中得图不会擦出。
这样会导致一个问题:
假设2个缓存分别叫A、B,有2副3X3的图像,内容分别是1和2;
首先我们做第一幅图向右移动,没有内容用0表示:
1 0 0 1 1 0 1 1 1
1 0 0 1 1 0 1 1 1
1 0 0 1 1 0 1 1 1
A B A
上面是向右移动完成,缓存中得图像,接着我们用第二幅图做向下移动,此时的缓存轮到了B:
2 2 2
1 1 0
1 1 0
B
这样问题就来了,向下 我们应该是没有1的。应该是:
2 2 2
0 0 0
0 0 0
B
解决问题的方法:建一个3X3,也就是跟图像一样大得Canvas,在上面先画好,再draw到SurfaceView。
按上面方法,先向右,假设Canvas叫C,则:
1 0 0 1 1 0 1 1 1
1 0 0 1 1 0 1 1 1
1 0 0 1 1 0 1 1 1
C C C
1 0 0 1 1 0 1 1 1
1 0 0 1 1 0 1 1 1
1 0 0 1 1 0 1 1 1
A B A
再向下:
2 2 2 2 2 2 2 2 2
0 0 0 2 2 2 2 2 2
0 0 0 0 0 0 2 2 2
C C C
2 2 2 2 2 2 2 2 2
0 0 0 2 2 2 2 2 2
0 0 0 0 0 0 2 2 2
B A B
- Android SurfaceView双缓存
- SurfaceView的烦恼-双缓存与清屏
- Android SurfaceView 双缓冲机制
- Android SurfaceView双缓冲绘图
- Android SurfaceView双缓冲绘图
- surfaceview缓存问题
- android SurfaceView
- Android SurfaceView
- android SurfaceView
- Android SurfaceView
- android SurfaceView
- Android SurfaceView
- Android SurfaceView
- Android SurfaceView
- Android - SurfaceView
- Android SurfaceView
- android surfaceview
- Android SurfaceView
- 如何在COCOS2D中绘制3d椭圆柱?
- APP应用发送邮件
- 关于Lucene4.x起Field对象不在指定域排序的一点解惑
- 关于在使用gson解析json时建模与规范冲突的问题
- [BestCoder #31]简要题解
- Android SurfaceView双缓存
- 如何分析APP功能需求、结构?
- 算法设计技巧--离散暴力将时间将为O(0);
- 代码大全:启程
- Java中的接口与抽象类的区别
- 【javascript】如何在Javascript中创造map对象?
- 三分查找
- 取得软件设计师资格感受
- APP应用中发短信