Android图形处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9页/共19页
Frame动画
• 在res/drawable/文件夹下创建一个XML文件animation1,定义 ImageView的drawable资源animation-list。通过animation-list指定这是 个AnimationDrawable动画定义,里面的item来指定每帧图片和显示时 间(单位为毫秒),帧显示的顺序就是item定义的顺序。如果 android:oneshot设置为true表明该动画只播放一次,否则该动画会循环 播放。这些设置也可以通过 AnimationDrawable提供的函数来设置
• 如果需要,绘制淡入淡出相关的内容并恢复保存的画布所在的层(layer)
• 绘制修饰的内容(例如滚动条). 备注:当一个 ChildView 要重画时,它会调用其成员函数 invalidate() 函数将通 知其 ParentView 这个 ChildView 要重画,这个过程一直向上遍历到 ViewRoot, 当 ViewRoot 收到这个通知后就会调用上面提到的 ViewRoot 中的 draw 函数从 而完成绘制。
Android图形系统概述
Skia是Google一个底层的图形,图像,动画,SVG,文本等多方面的图 形库,它是Android中图形系统的引擎。最主要的API是SkCanvas类。
第1页/共19页
Android图形系统概述
• 对于2D图形处理,Android并没有使用Java的图形处理类 ,而是自定义了一系列的2D图形处理类,这些类分别位于 android.graphics,android.graphics.drawable.shapes和 android.view.animation包中。
第2页/共19页
Android图形统概述
Android系统中的图形处理基本上可以分为两类:
一类是静态图形处理,也就是这些图片不经常变化,例如 ,一些图标,logo等,针对这些图形的处理,一般是将图 形作为资源文件添加到工程当中,然后通过各种Drawable 类来处理使用。
另一类是动态图形处理,也就是这些图片要经常变化(包 括大小,位置,形状等)需要不断地进行绘制。例如翻书 效果。
• ViewRoot 不是View,它本质上是一个 Handler,ViewRoot 是 建立主View与 WindowsManger 通讯 的桥梁 。
第5页/共19页
Android动画处理
第6页/共19页
Android动画处理
• 递归的绘制整个窗口需要按顺序执行以下几个步骤
• 绘制背景
• 如果需要,保存画布(canvas)的层(Layer),为淡入或淡出做准备;
停止动画的播放。
第10页/共19页
Tween动画
Tween 动画通过对 View 的内容完成一系列的图形变换 (包括平移、缩放、 旋转、改变透明度)来实现动画效果。 • 创建一个类继承View类。覆写onDraw()方法,使用Canvas对象在界面上绘制
第8页/共19页
Frame动画
Frame动画是通过 android.graphics.drawable.AnimationDrawable类来实现的 ,在该类中保存了帧序列以及显示的时间,为了简化动画的 创建,Android提供了一种通过XML来创建逐帧动画的方式, 这样把动画的创建和代码分来以后如果需要修改动画内容, 只需要修改资源文件就可以了不用修改代码,简化开发维护 工作。
• 绘制 View 本身的内容,通过调用 View.onDraw(canvas) 函数实现.
• 绘制自己的孩子(通常也是一个 view 系统),通过 dispatchDraw(canvas) 实 现,参看 ViewGroup.Java 中的代码可知,dispatchDraw->drawChild>child.draw(canvas) 这样的调用过程被用来保证每个子 View 的 draw 函数都 被调用,通过这种递归调用从而让整个 View 树中的所有 View 的内容都得到绘 制。在调用每个子 View 的 draw 函数之前,需要绘制的 View 的绘制位置是在 Canvas 通过 translate 函数调用来进行切换的,窗口中的所有 View 是共用一 个 Canvas 对象
• ImageView 通过android:src="@drawable/animation1"引用了前面定义 的AnimationDrawable。
• 通过getDrawable接口取得AnimationDrawable对象。 • 需要执行动画播放时,调用AnimationDrawable的start方法。stop用来
第3页/共19页
Android动画处理
现有的 Android 动画框架是建立在 View 的级别上的。 要了解 Android 动画是如何画出来的,我们首先要了解 Android 的 View 是如何组织在一起,以及他们是如何画自己 的内容的。
第4页/共19页
Android动画处理
• DecorView是window的Top-level View,称之为主View。 是整个ViewTree的根节点。DecorView会缺省的 attach 到 Activity 的主窗口中。
• 对于3D图形的处理,Android集成了OpenGL ES 提供的 高效3D图形处理技术,这些类分别位于 javax.microedition.khronos.opengles和android.opengl包 中。
Copyright 2010 By Neusoft Group. All rights reserved
第7页/共19页
Android动画处理
在android系统中提供了两种动画实现方式: • 一种是Tween动画,这种实现方式可以使视图组件平移、
缩放、旋转以及产生透明度的变化; • 另外一种是Frame动画,这是一种传统的动画方法,通过
顺序播放排放好的图片来实现。
Copyright 2010 By Neusoft Group. All rights reserved
相关文档
最新文档