文档章节

android动画之SurfaceView

abcijkxyz
 abcijkxyz
发布于 2016/07/30 17:24
字数 304
阅读 6
收藏 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
粉丝 64
博文 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 使用双缓冲辨析及surfaceview使用例程-转载(觉得写的很清楚)

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

LiangX
2013/05/28
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

没有更多内容

加载失败,请刷新页面

加载更多

SharedPreferences 的使用,commit和apply两个方法的区别

SharedPreferences sp = getSharedPreferences("config",MODE_PRIVATE); //第一个参数:存储文件的名称,第二个参数文件的访问权限,通常MODE_PRIVATE是私有存储 sp.edit().putString("USERNAM...

lanyu96
26分钟前
1
0
02-《Apache Tomcat 9 User Guide》之简介

1.Introduction - 介绍 For administrators and web developers alike, there are some important bits of information you should familiarize yourself with before starting out. This d......

飞鱼说编程
30分钟前
1
0
关于maven的使用,这一篇基本就够了

2.1 关于maven 每一个工具的出现都有其历史意义,而Maven的出现则是开发者对于不同的项目都要有自己的Ant构建文件,而这些文件都各不相同,而且JAR被检入CVS(Concurrent Version System),...

小小明童鞋
32分钟前
16
0
从xtrabackup完整备份恢复单个innodb表

现在大多数同学在线上采取的备份策略都是xtrabackup全备+binlog备份,那么当某天某张表意外的删除那么如何从xtrabackup全备中恢复呢?从mysql 5.6版本开始,支持可移动表空间(Transportable...

IT--小哥
36分钟前
1
0
百度AI攻城狮,用TensorFlow API训练目标检测模型(浣熊超可爱)

今天,人工智能正影响我们生产、生活的方方面面。10月10日,为期三天的2018华为全联接大会在上海拉开帷幕,此次大会以“+智能,见未来”为主题,发布了AI战略及全球领先的全栈全场景AI解决方...

Python唱情歌
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部