android 动画实现

项目需求:要求实现文字滚动的效果,考虑到在android 中对动画的实现有Tween和Flame两种方式,查阅资料以后发现还是需要使用Tween的方式,写了一个工具类AnimUtil,通过调用工具类实现View的动画效果,并且为了方便对View的界面更新,AnimUtil还集成自Handler。具体参考代码如下:

 

[java][/java] view plaincopy

  1. package com.vtion.sleb.banca.utils;
  2. import android.content.Context;
  3. import android.os.Handler;
  4. import android.view.View;
  5. import android.view.animation.Animation;
  6. import android.view.animation.Animation.AnimationListener;
  7. import android.view.animation.AnimationUtils;
  8. import com.vtion.sleb.activities.R;
  9. public class AnimUtils extends Handler implements AnimationListener {
  10.     private View view;
  11.     private Animation anim_right;
  12.     private Animation anim_left;
  13.     public AnimUtils(View view, Context context) {
  14.         anim_right = AnimationUtils.loadAnimation(context, R.anim.right_in);
  15.         anim_left = AnimationUtils.loadAnimation(context, R.anim.left_out);
  16.         anim_right.setAnimationListener(this);
  17.         anim_right.setFillAfter(true);
  18.         anim_left.setFillAfter(true);
  19.         this.view = view;
  20.         this.view.startAnimation(anim_right);
  21.     }
  22.     @Override
  23.     public void onAnimationEnd(Animation animation) {
  24.         this.postDelayed(new Runnable() {
  25.             @Override
  26.             public void run() {
  27.                 view.startAnimation(anim_left);
  28.             }
  29.         }, 2000);
  30.     }
  31.     @Override
  32.     public void onAnimationRepeat(Animation animation) {
  33.     }
  34.     @Override
  35.     public void onAnimationStart(Animation animation) {
  36.         System.out.println();
  37.         System.out.println();
  38.     }
  39. }

 

 

anim文件夹下存放着和动画相关的xml配置文件:

 

[java][/java] view plaincopy

  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <set xmlns:android=”http://schemas.android.com/apk/res/android” >
  3.     <translate
  4.         android:duration=”700″
  5.         android:fromXDelta=”100%p”
  6.         android:toXDelta=”50%p” />
  7.     <alpha
  8.         android:duration=”700″
  9.         android:fromAlpha=”0.1″
  10.         android:toAlpha=”1.0″ />
  11. </set>
[java][/java] view plaincopy

  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <set xmlns:android=”http://schemas.android.com/apk/res/android” >
  3.     <translate
  4.         android:duration=”700″
  5.         android:fromXDelta=”50%p”
  6.         android:toXDelta=”0″ />
  7.     <alpha
  8.         android:duration=”700″
  9.         android:fromAlpha=”1.0″
  10.         android:toAlpha=”0.0″ />
  11. </set>

补充:

 

在xml文件中对动画进行配置的各个属性介绍

 

Alpha:渐变透明度动画效果

Scale:渐变尺寸伸缩动画效果

Translate:移动动画效果

Rotate:旋转动画效果

 

 

  1. <!–
  2.         fromXScale[float]:为动画起始时,X坐标上的伸缩尺寸,0.0表示收缩到没有
  3.         fromYScale[float]:为动画起始时,Y坐标上的伸缩尺寸,0.0表示收缩到没有
  4.                 1.0表示正常无伸缩
  5.                 值小于1.0表示收缩
  6.                 值大于1.0表示放大
  7.     toXScale[float]:为动画结束时,X坐标上的伸缩尺寸
  8.     toYScale[float]:为动画结束时,X坐标上的伸缩尺寸
  9.     pivotX[float]:为动画相对于物件的X坐标的开始位置
  10.     pivotY[float]:为动画相对于物件的X、Y坐标的开始位置
  11.             50,50%,50%p。这三种写法就分别代表了ABSOLUTE,RELATIVE_TO_SELF和RELATIVE_TO_PARENT。
  12.             属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
  13.     fillAfter[boolean]:当设置为true ,该动画转化在动画结束后被应用
  14.     startOffset[long]:动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
  15.     repeatCount[int]:动画的重复次数 –>

 

 

interpolator:指定一个动画的插入器,用来控制动画的速度变化

fromAlpha:动画起始时透明度  0.0表示完全透明  1.0表示完全不透明  以上值取0.0-1.0之间的float数据类型的数字

toAlpha:动画结束时透明度

duration:持续时间

标签