Android动画笔记
来源:互联网 发布:杨千嬅 知乎 编辑:程序博客网 时间:2024/06/02 04:05
1、动画分类
1、动画分为两种类型:
1)Property Animation:属性动画
通过该修改object的属性来实现动画效果,通过Animator类实现;
2)View Animation:视图动画,分为两种类型:
①Tween animation: 补间动画,通过在单张图片进行一系列变换来实现动画效果,通过Animation类实现;
②Frame animation: 帧动画,通过顺序播放多张图片来实现动画效果,通过AnimationDrawable类实现;
2、属性动画
1、代码实现
①Animator类,常用方法有:
addListener():添加监听器,监听animation的start,repeat,end,cancel事件;
addPauseListener():添加暂停监听器,监听animation的pause事件;
setDuration():设置animation持续的时间;
setInterpolator():设置插值器;
start():开始动画;
Animator的子类有AnimatorSet,ValueAnimator
②AnimatorSet类:按照一定的顺序播放集合中的Animator
playSequentially():创建顺序播放的animation
playTogether():创建同时播放animation
setDuration():设置持续的时间
setInterpolator():设置插值器;
start();开始动画;
2、XML实现
资源文件位置:res/animator/filename.xml
资源引用:在java代码中引用:R.animator.filename
在XML文件中引用:@[package:]animator/filename
语法:
<set android:ordering=["together" | "sequentially"]> <objectAnimator android:propertyName="string" android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/> <animator android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/> <set> ... </set></set>之后,在java代码中通过以下代码加载动画资源:
AnimatorSet set = (AnimatorSet)AnimatorInflater.loadAnimator(myContext,R.anim.property_animator);set.setTarget(myObject);set.start();
3、补间动画
1、代码实现
ViewAnimation的子类包括:
AlphaAnimation:淡入淡出,改变透明度
RotateAnimation:旋转
ScaleAnimation:尺寸拉伸
TranslateAnimation:位置移动
AnimationSet
方法举例:setInterpolator(Interpolator i)、start()、cancel(),参见API。
2、XML实现
资源文件位置:res/anim/filename.xml
资源应用:在Java代码中引用:R.anim.filename
在XML文件中引用:@[package:]anim/filename
语法:
<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] > <alpha android:fromAlpha="float" android:toAlpha="float" /> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float" /> <translate android:fromXDelta="float" android:toXDelta="float" android:fromYDelta="float" android:toYDelta="float" /> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float" /> <set> ... </set></set>
之后,在java代码中通过以下代码加载动画资源:
ImageView image =(ImageView)findViewById(R.id.image);Animation hyperspaceJump=AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);image.startAnimation(hyperspaceJump);
4、帧动画
1、代码实现
AnimationDrawable类常用方法:
addFrame(Drawable frame, int duration)
getFrame(int index)
start()
inflate(Resources r, XmlPullParserparser,AttributeSet attrs, Resources.Theme theme)
2、XML实现
文件位置:res/drawable/filename.xml
资源引用:在java代码中引用:R.drawable.filename
在XML文件中引用:@[package:]drawable.filename
语法
<?xmlversion="1.0"encoding="utf-8"?><animation-listxmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" /></animation-list>之后,在java代码中通过以下代码加载动画资源:
ImageView rocketImage =(ImageView)findViewById(R.id.rocket_image);rocketImage.setBackgroundResource(R.drawable.rocket_thrust);rocketAnimation =(AnimationDrawable)rocketImage.getBackground();rocketAnimation.start();
5、插值器Interpolator
插值器是用来控制动画变化的速度的,可用于属性动画,补间动画。
Android中的插值器都是Intepolator的子类,对每一个插值器类,都有一个公共的资源文件与它对应,您可以在XML文件中通过android:interpolator属性来引用。
常用的插值器有:AccelerateInterpolator、DecelerateInterpolator、AccelerateDecelerateInterpolator等,参见API。
自定义Intepolator:
资源文件位置:res/anim/filename.xml
资源引用:在XML文件中引用: @[package:]anim/filename
语法:
<?xmlversion="1.0"encoding="utf-8"?><InterpolatorNamexmlns:android="http://schemas.android.com/apk/res/android" android:attribute_name="value"/>在标签内可引用以下标签进行自定义Intepolator
<accelerateInterpolator>android:factor(动画加速的速度)
<anticipateInterpolator>android:tension
<decelerateInterpolator>android:factor
6、属性动画其他内容
Animator.AnimatorListener
ValueAnimator.AnimatorUpdateListener
TypeEvaluator:属性动画的值计算器
- Android笔记-Android动画
- Android笔记----动画、属性动画
- android动画学习笔记
- Android动画学习笔记
- android 动画笔记
- Android动画学习笔记
- Android动画学习笔记
- android 动画笔记
- Android 动画学习笔记
- Android动画学习笔记
- Android 动画学习笔记
- Android动画学习笔记
- Android动画学习笔记
- Android 动画学习笔记
- Android动画学习笔记
- android动画学习笔记
- Android 动画学习笔记
- Android动画学习笔记
- TCP和UDP
- [数据库事务与锁]详解二: 数据库的读现象浅析
- CoreData创建托管对象子类后 编译文件重复错误
- Spring原理之代理与动态代理模式总结(四)
- SpringBoot中使用数据缓存
- Android动画笔记
- Flip Game
- centos 6 将python 2.6 升级到python 2.7
- 推荐MongoDB教程
- js中对于DOM1的扩展
- 视图抖动
- 【代码】N个非定长升序数组 合并成一个升序数组
- 【Unity3D入门】Unity3D学习笔记002——Visual Studio的下载、安装、破解与配置
- Android Context 上下文 你必须知道的一切