Android属性动画之XML定义方式
2015-10-16 11:22
597 查看
前面我们讲到的属性动画都是使用代码的定义方式:Android属性动画之ValueAnimator和Android属性动画之ObjectAnimator和AnimatorSet,下面我们再来看看使用XML文件该怎么做。
(1) XML文件位置:res/animator/filename.xml
(2) 文件编译后的类型:ValueAnimator, ObjectAnimator, AnimatorSet。这三种类型前面已经介绍过。
(3) 引用资源的方式:
In Java: R.animator.filename
In XML: @[package:]animator/filename
下面来看看它的语法:
它上面包含了三个元素,set、objectAnimator、animator分别对应AnimatorSet、ObjectAnimator、ValueAnimator三个对象,这三个对象前面已经介绍过了:Android属性动画之ValueAnimator和Android属性动画之ObjectAnimator和AnimatorSet。
下面来分别介绍一下这几个元素。
1、
它是一个集合,包含了其他的元素,包括, 和其他的元素,它代表的就是一个AnimatorSet对象。
它具有如下属性:
android:ordering
指定集合中动画播放的顺序。
它具有两种类型的值:sequentially和together。第一个表示顺序执行,第二个表示同时执行。默认是together。
2、
它指定一个对象的属性动画,表示一个ObjectAnimator对象。
它具有如下属性:
android:propertyName
属性名称,例如一个view对象的”alpha”和”backgroundColor”。
android:valueFrom
变化开始值
android:valueTo
变化结束值
android:valueType
变化值类型
它有两种值:intType和floatType,第二种为默认值
android:duration
持续时间
android:startOffset
动画开始延迟时间
android:repeatCount
重复次数,-1表示无限重复
android:repeatMode
重复模式,前提是android:repeatCount为-1
它有两种值:”reverse”和”repeat”,第一个表示反向重复,第二个为顺序重复。
3、
它对应的就是ValueAnimator对象。
它具有如下属性:
android:valueFrom
android:valueTo
android:duration
android:startOffset
android:repeatCount
android:repeatMode
android:valueType
这个跟上面一样,就不解释了,需要注意的是,在前面 Android属性动画之ValueAnimator中,我们就知道,使用这样方式需要自己去进行属性值的修改,它里面没有指定属性,我们使用animator.addUpdateListener去获取变化值,然后自己修改对应属性的值。
下面我们来看看一个例子:
XML文件如下,它的位置在res/animator/property_animator.xml。
使用XML来定义,那么如果希望让这个动画运行起来,首先肯定是需要解析这个XML文件,要把这个XML文件解析为一个AnimatorSet对象,然后为这个动画设置目标对象,最终启动动画。
下面是代码:
参考文章:http://developer.android.com/guide/topics/resources/animation-resource.html
(1) XML文件位置:res/animator/filename.xml
(2) 文件编译后的类型:ValueAnimator, ObjectAnimator, AnimatorSet。这三种类型前面已经介绍过。
(3) 引用资源的方式:
In Java: R.animator.filename
In 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>
它上面包含了三个元素,set、objectAnimator、animator分别对应AnimatorSet、ObjectAnimator、ValueAnimator三个对象,这三个对象前面已经介绍过了:Android属性动画之ValueAnimator和Android属性动画之ObjectAnimator和AnimatorSet。
下面来分别介绍一下这几个元素。
1、
<set>
它是一个集合,包含了其他的元素,包括, 和其他的元素,它代表的就是一个AnimatorSet对象。
它具有如下属性:
android:ordering
指定集合中动画播放的顺序。
它具有两种类型的值:sequentially和together。第一个表示顺序执行,第二个表示同时执行。默认是together。
2、
<objectAnimator>
它指定一个对象的属性动画,表示一个ObjectAnimator对象。
它具有如下属性:
android:propertyName
属性名称,例如一个view对象的”alpha”和”backgroundColor”。
android:valueFrom
变化开始值
android:valueTo
变化结束值
android:valueType
变化值类型
它有两种值:intType和floatType,第二种为默认值
android:duration
持续时间
android:startOffset
动画开始延迟时间
android:repeatCount
重复次数,-1表示无限重复
android:repeatMode
重复模式,前提是android:repeatCount为-1
它有两种值:”reverse”和”repeat”,第一个表示反向重复,第二个为顺序重复。
3、
<animator>
它对应的就是ValueAnimator对象。
它具有如下属性:
android:valueFrom
android:valueTo
android:duration
android:startOffset
android:repeatCount
android:repeatMode
android:valueType
这个跟上面一样,就不解释了,需要注意的是,在前面 Android属性动画之ValueAnimator中,我们就知道,使用这样方式需要自己去进行属性值的修改,它里面没有指定属性,我们使用animator.addUpdateListener去获取变化值,然后自己修改对应属性的值。
下面我们来看看一个例子:
XML文件如下,它的位置在res/animator/property_animator.xml。
<set android:ordering="sequentially"> <set> <objectAnimator android:propertyName="x" android:duration="500" android:valueTo="400" android:valueType="intType"/> <objectAnimator android:propertyName="y" android:duration="500" android:valueTo="300" android:valueType="intType"/> </set> <objectAnimator android:propertyName="alpha" android:duration="500" android:valueTo="1f"/> </set>
使用XML来定义,那么如果希望让这个动画运行起来,首先肯定是需要解析这个XML文件,要把这个XML文件解析为一个AnimatorSet对象,然后为这个动画设置目标对象,最终启动动画。
下面是代码:
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.anim.property_animator); set.setTarget(myObject); set.start();
参考文章:http://developer.android.com/guide/topics/resources/animation-resource.html
相关文章推荐
- android触控,先了解MotionEvent
- 【Android 开发】: Android 消息处理机制之三: Handler 中 sendMessage() 源代码剖析
- android获取屏幕宽高
- Android设计模式-单例模式(Singleton Pattern)
- android videoview播放视频前获取视频时长(根据视频路径获取)
- Android任务栈简介
- Android基础入门教程——8.3.1 三个绘图工具类详解
- Android中的显示单位
- 内存管理(3)-Android内存泄露分析
- Android 动画总结
- Android应用原码编译大致过程概括
- Android apk 反编译和混淆
- 定制Android系统开发之二——系统服务
- Android KITKAT 以上实现translucent状态栏
- Android通知栏颜色改变方法
- Android平台对H264视频硬解码
- 查看Android应用包名、Activity的几个方法
- android中xml tools属性详解
- 怎样使一个Android应用不被杀死?
- android中ListView或GridView出现在adapter中的getView出现多次position为0的情况