文档章节

android动画之SurfaceView

abcijkxyz
 abcijkxyz
发布于 2016/07/30 17:24
字数 304
阅读 4
收藏 0
点赞 0
评论 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
粉丝 61
博文 6195
码字总数 1876
作品 0
深圳
项目经理
Android多人视频聊天应用的开发(三)多人聊天

在上一篇《Android多人视频聊天应用的开发(二)一对一聊天》中我们学习了如何使用声网Agora SDK进行一对一的聊天,本篇主要讨论如何使用Agora SDK进行多人聊天。主要需要实现以下功能: 1、...

东风玖哥 ⋅ 04/17 ⋅ 0

SurfaceTexture,TextureView,GLsurfaceview的区别与联系详解

Android 中的SurfaceTexture,TextureView, GLsurfaceview的区别与联系详解 SurfaceView, GLSurfaceView, SurfaceTexture和TextureView是Android当中名字比较绕,关系又比较密切的几个类。本...

国仔饼 ⋅ 2017/03/07 ⋅ 0

安卓SurfaceView 实现下雨效果

安卓SurfaceView 实现下雨效果 先来一张效果图 我的思路:下雨每个雨滴用一条线来实现,生成一条线,X轴坐标随机,Y轴不断增加,就形成了下雨的效果 1.首先定义mSurfaceView类,继承Serfacevi...

思考往前 ⋅ 05/10 ⋅ 0

Android动画:献上一份详细 & 全面的动画知识学习攻略

前言 动画的使用 是 开发中常用的知识 可是动画的种类繁多、使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将献上一份动画的全面介绍攻略,包括动...

Carson_Ho ⋅ 06/06 ⋅ 0

Android Transition Animation 过渡动画解析

本文主要译自 lgvalle 的 Material-Animations 的 README.MD,文中的源码见 Material-Animations。 Android 4.4.2 中引入了 Transition 过渡动画,不过那时的 API 的功能比较简单,只能对整个...

JohnnyShieh ⋅ 04/09 ⋅ 0

Android 动画:这是一份详细 & 清晰的 动画学习指南

前言 动画的使用 是 开发中常用的知识 可是动画的种类繁多、使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将献上一份动画的全面介绍攻略,包括动...

Carson_Ho ⋅ 05/03 ⋅ 0

Android动画曲线库AndroidEasingFunctions

Android动画曲线库AndroidEasingFunctions AndroidEasingFunction是基于Easing Function(缓动函数)的Android动画曲线库。它提供了九大类27种动画曲线效果,可以使对应的属性按照时间进行变...

大学霸 ⋅ 05/17 ⋅ 0

Android视图动画集合AndoridViewAnimations

Android视图动画集合AndoridViewAnimations Android视图动画是针对视图对象的动画效果,包括对象平移、旋转、缩放和渐变四种类型。通过组合这四种类型,可以创建出无数种动画效果。AndroidVi...

大学霸 ⋅ 05/16 ⋅ 0

【Animations】动画可绘制的图形(3)

原文 概要 在某些情况下,图像需要在屏幕上进行动画。如果您想要显示由多个图像组成的自定义加载动画,或者如果您希望一个图标在用户操作后变成另一个图标,这非常有用。Android为绘制动画提...

lichong951 ⋅ 05/28 ⋅ 0

Android 音视频开发入门指南(2)

GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而且在预览Camera上有其独到之处。独到之处在哪?当使用Surfaceview无能为力、痛不欲生时就只有使用GLSurfaceView了,它能够真正做...

shareus ⋅ 04/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 21分钟前 ⋅ 0

Java学习路径及练手项目合集

Java学习路径及练手项目合集

颖伙虫 ⋅ 37分钟前 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

MVC——统一报文格式的异常处理响应

在我们写controller层的时候,常常会有这样的困惑,如果需要返回一个数据是,可能为了统一回去构造一个类似下列的数据格式: { status:true, msg:"保存成功!", data:[]} 而且在写...

alexzhu592 ⋅ 昨天 ⋅ 0

android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app

开发中常常有打开本地浏览器加载url或者指定浏览器加载, 还有打开第三方app, 如 打开高德地图 百度地图等 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。 如果手机本身...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部