Android 动画系统汇总

  Android动画系统的种类:

1. 属性动画 (Property Animation)
2. 补间动画 (Tween Animation)
3. 帧动画     (Frame Animation)
4. Drawable

 

属性动画(Property Animation):

可以改变控件对象属性的对象,譬如控件的位置,透明度,旋转等。包含两个基本的Animator:

1.ValueAnimator : 提供一个动画时序引擎,用来计算动画时序内,动画的值。
使用方式:
private void valueAnimatorTest(final View view) {  
      ValueAnimator anim = new ValueAnimator(); //创建ValueAnimator
      anim.setDuration(2000);  // 设置动画时常
      anim.setObjectValues(new My()); //设置自定义初始值
      anim.setEvaluator(new TypeEvaluator<My>() {  
              @Override
              public My evaluate(float fraction, My startValue, My endValue) {
                    System.out.println("fraction = " + fraction);
                    // fraction:动画执行时间片段
                    My my = new My();  // My是一个实体类,可以自定义View的各个属性值
                    return my;
              }
      });
    anim.addUpdateListener(new AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator valueAnimator) {
                      My value = (My)valueAnimator.getAnimatedValue(); // 得到当前动画片段的计算的自定义值,用来改变控件的属性
              }
      });
      anim.start();
}

2. ObjectAnimator:是ValueAnimator的子类,这里对属性进行了一层逻辑实现,使用者可以直接通过动画改变控件属性,相关属性说明如下:
使用方式:
1. 控制单个属性动画
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "scaleX", 1.0F,  0.0F).setDuration(500);
anim.start();

2. 控制多个属性动画
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "anywords", 1.0F,  0.0F).setDuration(500);
anim.addUpdateListener(new AnimatorUpdateListener(){
          @Override
          public void onAnimationUpdate(ValueAnimator animation){
                    float cVal = (Float) animation.getAnimatedValue();
                    view.setAlpha(cVal);
                    view.setScaleX(cVal);
                    view.setScaleY(cVal);
          }
}
anim.start();

补间动画 (Tween Animation)

比较简单,与属性动画相比,只能改变控件的显示状态,不能实际改变控件属性值,主要有四中:

1. ScaleAnimation
2. RotateAnimation
3. AlphaAnimation
4. TranslateAnimation

补间动画相对简单,具体实现方式可参考其构造方法即可。

帧动画    (Frame Animation)

顾名思义,就是与电影的播放原理一样,逐帧显示图片达到动画的效果,实现方式:

1. 在res目录下建立 drawable 文件夹
2. 在drawable文件夹目录下创建  frame.xml 文件
3. frame.xml文件格式

<xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/pic1" android:duration="200"/>
  <item android:drawable="@drawable/pic2" android:duration="200"/>
  <item android:drawable="@drawable/pic3" android:duration="200"/>
</animation-list>
4. 应用在ImageView中
<ImageView
    ....
   android:src = "@drawable/frame"
/>
5.  代码启动动画
AnimationDrawable animationDrawable = (AnimationDrawable) view.getDrawable();
animationDrawable.start(); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值