文档章节

android动画之SurfaceView

abcijkxyz
 abcijkxyz
发布于 2016/07/30 17:24
字数 304
阅读 4
收藏 0
由于view有以下两个缺陷:
1、缺乏双缓冲机制;
2、当需要更新view上面的图像时,必须重绘整个图像,效率低下;
因此SurfaceView登场了!SurfaceView一般与SurfaceHolder结合使用,SurfaceHolder用来在SurfaceView上画图,它使用下面的方法来获取Canvas对象:
lockCanvas(Rect rect); //获取指定区域,画图时只对指定区域进行更新,可以提高效率。
lockCanvas();
绘图完成后,使用下面的方法来释放绘图,提交所绘制的图形:
unlockCanvasAndPost(Canvas canvas);
需要说明的是该方法之后绘制的图形还处于缓冲中,下次再lockCanvas时,可能会"遮挡"它。
SurfaceHolder还可以添加回调函数,callbak中有三个方法:
public void surfaceCreated(SurfaceHolder holder); //SurfaceView被创建时调用
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height); //SurfaceView格式或大小发生变换时调用
public void surfaceDestroyed(SurfaceHolder holder); //SurfaceView被销毁时调用

看一个例子,基于SurfaceView开发一个示波器,效果如下:


关键代码如下:
view1 = (SurfaceView)findViewById(R.id.surfaceview1);
holder = view1.getHolder();

Canvas canvas = holder.lockCanvas(new Rect(cx,cy-2,cx+2,cy+2));
canvas.drawPoint(cx,cy,paint);
...

holder.unlockCanvasAndPost(canvas);

完整源码下载地址:点击打开链接

本文转载自:http://blog.csdn.net/wdong_love_cl/article/details/51386456

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6196
码字总数 1876
作品 0
深圳
项目经理
【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!

李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/331.html 很多童鞋说我的代码运行后,点击home或者back后会程序异常,...

迷途d书童
2012/03/19
0
0
Android-SurfaceView与SurfaceHolder对象

1、Android-SurfaceView与SurfaceHolder对象: http://blog.csdn.net/andyhuabing/article/details/7657069 2、Android学习之 VideoView,SurfaceView: http://blog.csdn.net/abidepan/arti......

当空皓月
2014/12/18
0
0
Android SurfaceView简例

Android SurfaceView简例 Android中各的SurfaceView和View有很大的不同,两者应用场景不同。大多数View能做的事情SurfaceView也可以,但是SurfaceView效率更高。Android的View绘制过程由And...

开开心心过
2017/09/13
0
0
Android Graphic : apk and Skia/OpenGL|ES

Android apk里面的画图分为2D和3D两种:2D是由 Skia 来实现的,也就是我们在框架图上看到的SGL,SGL也会调用部分opengl的内容来实现简单的3D效果;3D部分是由OpenGL|ES实现的,OpenGL|ES是O...

Jerikc
2014/05/27
0
0
android 使用双缓冲辨析及surfaceview使用例程-转载(觉得写的很清楚)

本文转自:http://blog.csdn.net/blogercn/article/details/7404485 感谢作者分享! 双缓冲是图像编程中很重要的概念,在电脑的图像处理中就常常使用双缓冲来加快图像显示速度,消除图像刷新...

LiangX
2013/05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

No compiler is provided in this environment

maven 编译报错No compiler is provided in this environment 这个是由于maven在编译的过程中回使用到jdk ,它只会在环境变量中去寻找JAVA_HOME,如果没找到JAVA_HOME就会报这个错误。只要重...

优雅的胖子
10分钟前
0
0
(图文)最详细的XAMPP的安装及使用教程

XAMPP的安装及使用教程 1、简介 2、安装运行 3、配置Apache 4、配置MySQL 5、测试 6、修改MySQL默认密码 7、部署 XAMPP的安装及使用教程 1、简介 XAMPP(Apache+MySQL+PHP+PERL)是一个功能强...

梦梦阁
10分钟前
0
0
python 批量JSON数据,插入数据库

newList=[{"link":"https://www.1.com/","ga_tag":"xvideos","image":"http://static.2.mobi/views/images/xvideos.png?x-oss-process=style/120"},{"link":"https://www.3.com/","ga_tag":"......

Liens
13分钟前
0
0
mediarecord

mediarecorder what=268435556 -1007 解决方案 mPreviewSize = mCamera.getParameters().getPreferredPreviewSizeForVideo();...

zdglf
15分钟前
0
0
安装zookeeper和kafaka

安装zookeeper和kafaka http://mirrors.hust.edu.cn/apache/zookeeper/ http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/ http://mirrors.hust.edu.cn/apache/zookeeper/zoo......

蜗牛奔跑
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部