在开发过程中可能会遇到动画提前关闭的操作,这个时候我们就会用户clearAnimation();这个方法。但是如果动画已经启动了,这个时候就会触发new Animation.AnimationListener()的onAnimationEnd的方法。
/**
* 测试动画调用时机
*/
mMoveTextOut = new TranslateAnimation(0, 777, 0, 0);
mMoveTextOut.setDuration(5555);
mMoveTextOut.setInterpolator(new LinearInterpolator());
mMoveTextOut.setFillAfter(true);
mMoveTextOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
BlueLog.d(TAG, "onAnimationEnd ");
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
final TextView mMarqueeAnimationTV = (TextView)findViewById(R.id.tv_demo_marquee_test_onAnimationEnd);
findViewById(R.id.btn_demo_marquee_start).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mMarqueeAnimationTV.startAnimation(mMoveTextOut);
}
});
findViewById(R.id.btn_demo_marquee_stop).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mMarqueeAnimationTV.clearAnimation();
}
});
下面是布局片段
<Button
android:id="@+id/btn_demo_marquee_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"/>
<Button
android:id="@+id/btn_demo_marquee_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="结束动画"/>
<TextView
android:id="@+id/tv_demo_marquee_test_onAnimationEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试动画调用onAnimationEnd时机"/
测试后发现,在动画开时后可以调用clearAnimation触发onAnimationEnd事件。