android 动画总结笔记 一

来源:互联网 发布:linux 退出文件编辑 编辑:程序博客网 时间:2024/05/21 03:24
终于有时间可以详细去了解一下 android动画,先从android动画基础着手。在android 3.0之前android动画api主要是android.view.Animation包下的内容,来先看看这个包里面主要的类![Animation成员](http://img.blog.csdn.net/20150709115201928 "Animation类图")
<?xml version="1.0" encoding="utf-8"?>  <set xmlns: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>

布局文件必须有一个独立的根元素,可以是,,,,(持有一组其它的动画元素,可以是内嵌的set元素)中的一个
1****
android:interpolator动画插补器,该值必须是了解一个指定插值器的引用(不是一个类名),在平台中有缺省的插值器资源可以使用,或者自己创建插值器资源
android:shareInterpolator
Boolean 值,true:代表在所有的字元素中共享同一个插值器
Interpolator的具体使用方法
interpolator定义了动画变化的速率,在Animations框架当中定义了一下几种Interpolator
1、AccelerateDecelerateInterpolator:在动画开始与结束的地方速率变化比较慢,在中间的时候速率快。
2、accelerateInterpolator:在动画开始的地方速率变化比较慢,然后开始加速。
3、CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线
4、DecelerateInterpolator:在动画开始的时候速率改变比较慢,然后开始减速
5、linearInterpolator:动画以均匀的速率改变
自定义插值器
如果你对系统提供的插值器不满意,我们可以创建一个插值器资源修改插值器的属性,比如修改Aniticipateinterpolator的加速速率,调整CycleInterpolator的循环次数等,为了完成这种序曲,我们需要创建xml资源文件,然后再动画元素中引用即可。几种常用的插值器可调整的属性

android:factor 浮点值,加速速率,默认为1
android:tension 浮点值,起始点后退的张力、拉力数,默认为2
android:tension 同上 android:extraTension 浮点值,拉力的倍数,默认1.5(2 *1.5)

android:cycles int,循环的个数,默认为1
android:factor 浮点值,减速的速率,默认为1

浮点值,超出终点后的张力、拉力,默认为2

<?xml version="1.0" encoding="utf-8"?>  <overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"  android:tension="7.0"/>  This animation XML will apply the interpolator:  <scale xmlns:android="http://schemas.android.com/apk/res/android"  android:interpolator="@anim/my_overshoot_interpolator"  android:fromXScale="1.0"  android:toXScale="3.0"  android:fromYScale="1.0"  android:toYScale="3.0"  android:pivotX="50%"  android:pivotY="50%"  android:duration="700" />

如果简单的修改插值器的属性还不能够满足我们的需求,那么就自己来通过实现Interplator接口来定义自己的插值器,上面所有的Interpolator都实现了Interpolator接口,这个接口定义了一个方法:float getInterpolation(float intput);
此方法由系统调用,input代表动画的时间,在0和1之间,也就是开始和结束。

Frame动画

<?xml version="1.0" encoding="utf-8"?>  <animation-list xmlns: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>

必须作为跟元素,包含一个或者多个根元素
属性:android:oneshot: true: 只执行一次动画, false: 循环执行
一帧独立动画,必须是的子元素
属性:drawable资源图片
android:duration integer类型,该帧的时长,单位为毫秒

0 0