项目需求:要求实现文字滚动的效果,考虑到在android 中对动画的实现有Tween和Flame两种方式,查阅资料以后发现还是需要使用Tween的方式,写了一个工具类AnimUtil,通过调用工具类实现View的动画效果,并且为了方便对View的界面更新,AnimUtil还集成自Handler。具体参考代码如下:
package com.vtion.sleb.banca.utils;
import android.content.Context;
import android.os.Handler;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import com.vtion.sleb.activities.R;
public class AnimUtils extends Handler implements AnimationListener {
private View view;
private Animation anim_right;
private Animation anim_left;
public AnimUtils(View view, Context context) {
anim_right = AnimationUtils.loadAnimation(context, R.anim.right_in);
anim_left = AnimationUtils.loadAnimation(context, R.anim.left_out);
anim_right.setAnimationListener(this);
anim_right.setFillAfter(true);
anim_left.setFillAfter(true);
this.view = view;
this.view.startAnimation(anim_right);
}
@Override
public void onAnimationEnd(Animation animation) {
this.postDelayed(new Runnable() {
@Override
public void run() {
view.startAnimation(anim_left);
}
}, 2000);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
System.out.println();
System.out.println();
}
}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="700"
android:fromXDelta="100%p"
android:toXDelta="50%p" />
<alpha
android:duration="700"
android:fromAlpha="0.1"
android:toAlpha="1.0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="700"
android:fromXDelta="5