TweenAnimations补间动画详解

一、Animations的分类

Animations从总体上可以分为三大类:

1.Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。Alpha—淡入淡出,Scale—缩放效果,Rotate—旋转,Translate—移动效果。

2.Frame-by-frame Animations:这一类Animations可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示。

3.Property Animation在使用属性动画的时候要特别注意的是,使用动画后的view其属性会真实的改变。

  Tween Animations的通用方法

   1、setDuration(long durationMills)
    设置动画持续时间(单位:毫秒)
   2、setFillAfter(Boolean fillAfter)
    如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
   3、setFillBefore(Boolean fillBefore)
    如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
   4、setStartOffSet(long startOffSet)
    设置动画执行之前的等待时间
   5、setRepeatCount(int repeatCount)
    设置动画重复执行的次数


二、代码中使用Animations

Animations extends Object implements Cloneable 

 使用TweenedAnimations的步骤:

1.创建一个AnimationSet对象(Animation子类);

2.增加需要创建相应的Animation对象;

3.更加项目的需求,为Animation对象设置相应的数据;

4.Animatin对象添加到AnimationSet对象当中;

5.使用控件对象开始执行AnimationSet

   

   Animation的四个子类: AlphaAnimation、TranslateAnimation、ScaleAnimation、RotateAnimation

       【不提倡使用这种方法

       //创建一个AnimationSet对象,参数为Boolean型,

           //true表示使用Animationinterpolatorfalse则是使用自己的

           AnimationSet animationSet = new AnimationSet(true);

           //创建一个AlphaAnimation对象,参数从完全的透明度,到完全的不透明

           AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);

           //设置动画执行的时间

           alphaAnimation.setDuration(500);

           //alphaAnimation对象添加到AnimationSet当中

           animationSet.addAnimation(alphaAnimation);

           //使用ImageViewstartAnimation方法执行动画

           image.startAnimation(animationSet);

      

xml中使用Animations

     

         1.res文件夹下建立一个anim文件夹;

2.创建xml文件,并首先加入set标签,更改标签如下:

3.在该标签当中加入rotatealphascale或者translate标签;

4.在代码当中使用AnimationUtils当中装载xml文件,并生成Animation对象。因为AnimationAnimationSet的子类,所以向上转型,用Animation对象接收。


AnimationSet的具体使用方法

 

       1.AnimationSetAnimation的子类;

       2.一个AnimationSet包含了一系列的Animation

       3.针对AnimationSet设置一些Animation的常见属性(如startOffsetduration等),可以被包含在AnimationSet当中的Animation集成;


Interpolator的具体使用方法五

   Interpolator定义了动画变化的速率,在Animations框架当中定义了一下几种Interpolator

?         AccelerateDecelerateInterpolator:在动画开始与结束的地方速率改变比较慢,在中间的时候速率快。

?         AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速

?         CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线

?         DecelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始减速

?         LinearInterpolator:动画以均匀的速率改变


使用时分为以下几种情况:

1、在set标签中

<set xmlns:android="http://schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_interpolator"/>

2、如果在一个set标签中包含多个动画效果,如果想让这些动画效果共享一个Interpolator

    android:shareInterpolator="true"

3、如果不想共享一个interpolator,则设置android:shareInterpolator="true"并且需要在每一个动画效果处添加interpolator

<alpha

        android:interpolator="@android:anim/accelerate_decelerate_interpolator"

        android:fromAlpha="1.0"

        android:toAlpha="0.0"

        android:startOffset="500"

        android:duration="500"/>

 

4、如果是在代码上设置共享一个interpolator则可以在AnimationSet设置interpolator

 

AnimationSet animationSet = newAnimationSet(true);

animationSet.setInterpolator(new AccelerateInterpolator());

 

5、如果不设置共享一个interpolator则可以在每一个Animation对象上面设置interpolator

 

AnimationSet animationSet = newAnimationSet(false);

alphaAnimation.setInterpolator(new AccelerateInterpolator());

rotateAnimation.setInterpolator(new DecelerateInterpolator());


LayoutAnimationsController

1、什么是LayoutAnimationsController

LayoutAnimationsController可以用于实现使多个控件按顺序一个一个的显示。

1)LayoutAnimationsController用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置统一的动画效果。

2)每一个控件都有相同的动画效果

3)控件的动画效果可以在不同的时间显示出来

4)LayoutAnimationsController可以在xml文件当中设置,以可以在代码当中进行设置。

2、在xml当中使用LayoutAnimationController

1)res/anim文件夹下创建一个名为list_anim_layout.xml文件:

android:delay - 动画间隔时间;子类动画时间间隔 (延迟)   70% 也可以是一个浮点数 如“1.2”等

android:animationOrder - 动画执行的循序(normal:顺序,random:随机,reverse:反向显示)

android:animation – 引用动画效果文件

<layoutAnimation

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:delay="0.5"

    android:animationOrder="normal"

    android:animation="@anim/list_anim"/>

2)创建list_anim.xml文件,设置动画效果

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

    android:interpolator="@android:anim/accelerate_interpolator"

    android:shareInterpolator="true">

    <alpha

       android:fromAlpha="0.0"

       android:toAlpha="1.0"

       android:duration="1000"/>

</set>

 

3在布局文件main.xml当中为ListVIew添加如下配置

<ListView

       android:id="@id/android:list"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:scrollbars="vertical"

        android:layoutAnimation="@anim/list_anim_layout"/>

 

AnimationListener

1、什么是AnimationListener

1).AnimationListener是一个监听器,该监听器在动画执行的各个阶段会得到通知,从而调用相应的方法;

2).AnimationListener主要包括如下三个方法:

n         ·onAnimationEnd(Animation animation) - 当动画结束时调用

n         ·onAnimationRepeat(Animation animation) - 当动画重复时调用

n         ·onAniamtionStart(Animation animation) - 当动画启动时调用

测试发现,如果是在代码中写的动画那么动画监听是没有问题的,但是如果是在xml中设置的动画属性,则监听无反应。如有知道原因的请留言下,谢谢!



                                                           最后感谢360doc图书馆!



Android开发基地:http://www.ydsimon.net.cn

动画DEMO下载:点击打开链接
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值