- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
I如何使用surfaceview
如何使用surfaceview
通过之前介绍的如何自定义View, 我们知道使用它可以做一些简单的动画效果。它通过不断循环的执行View.onDraw方法,每次执行都对内部显示的图形做一些调整,我们假设 onDraw方法每秒执行20次,这样就会形成一个20帧的补间动画效果。但是现实情况是你无法简单的控制View.onDraw的执行帧数,这边说的执 行帧数是指每秒View.onDraw方法被执行多少次,这是为什么呢?首先我们知道,onDraw方法是由系统帮我们调用的,我们是通过调用View的 invalidate方法通知系统需要重新绘制View,然后它就会调用View.onDraw方法。这些都是由系统帮我们实现的,所以我们很难精确去定 义View.onDraw的执行帧数,这个就是为什么我们这边要了解SurfaceView了,它能弥补View的一些不足。
首先我们先写一个自定义View实现动画效果,AnimateViewActivity.java:
[java]?view plaincopyprint?
package?com.android777.demo.uicontroller.graphics;??
???
import?android.app.Activity;??
import?android.content.Context;??
import?android.graphics.Canvas;??
import?android.graphics.Color;??
import?android.graphics.Paint;??
import?android.os.Bundle;??
import?android.view.View;??
???
public?class?AnimateViewActivity?extends?Activity?{??
???
????@Override??
????protected?void?onCreate(Bundle?savedInstanceState)?{??
????????super.onCreate(savedInstanceState);??
???
????????setContentView(new?AnimateView(this));//這邊傳入的this代表這個對象,因為Activity是繼承自Content類的,因此該對象也??
???????????????????????????????????????????????可向上轉型為Content類型作為AnimateView的構造方法的參數??
????}??
???
????class?AnimateView?extends?View{??
???
????????float?radius?=?10;??
????????Paint?paint;??
???
????????public?AnimateView(Context?context)?{??
????????????super(context);??
????????????paint?=?new?Paint();??
????????????paint.setColor(Color.YELLOW);??
????????????paint.setStyle(Paint.Style.STROKE);??
????????}??
???
????????@Override??
????????protected?void?onDraw(Canvas?canvas)?{??
???
????????????canvas.translate(200,?200);??
????????????canvas.drawCircle(0,?0,?radius++,?paint);????????????
???
????????????if(radius??100){??
????????????????radius?=?10;??
????????????}??
???
????????????invalidate();//通过调用这个方法让系统自动刷新视图??
???
????????}??
???
????}??
???
}??
运行上面的Activity,你将看到一个圆圈,它原始半径是10,然后不断的变大,直到达到100后又恢复到10,这样循环显示,视觉效果上说你将看到一个逐渐变大的圆圈。它能做的只是简单的动画效果,具有一些局限性。首先你无法控制动画的显示速度,目前它是以最快的 速度显示,但是当你要更快,获取帧数更高的动画呢? 因为View的帧数是由系统控制的,所以你没办法完成上面的操作。如果你需要编写一个游戏,它需要的帧数比较高,那么Vi
您可能关注的文档
- I如何上好武术课.doc
- l旅游英语课件(AWelcomeSpeech).ppt
- l旅游购买行为案例分析.ppt
- I如何上好第一节小学英语课.docx
- I如何上好第一节课.doc
- I如何上好综合实践课.doc
- l旅游饭店星级的划分与评定1.ppt
- l中国的工业精讲.ppt
- l旅行社产品价格策略.ppt
- l旅行社接待业务管理.ppt
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)