我有一个动画可绘画的人有树动画:淡出,淡入和旋转。
这三个是因为我更改了一个圆形可绘制的搜索可绘制(以表明搜索正在进行)
问题是,当我改回“搜索”可绘制时,他与已经消失的圆圈处于相同的旋转状态,经过一些毫秒后,他回到了正确的位置。
在尝试淡入淡出动画之前,我尝试过clearAnimations()但没有成功。
我的动画(每个文件中有一个): 的 fade_in.xml
<?xml version="1.0" encoding="UTF-8"?>
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="800"
xmlns:android="http://schemas.android.com/apk/res/android" />
fade_out.xml
<?xml version="1.0" encoding="UTF-8"?>
<alpha android:fromAlpha="1.0"
android:toAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="800"
xmlns:android="http://schemas.android.com/apk/res/android" />
rotate_spinner.xml
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1800"
android:fillAfter="false"
android:repeatCount="infinite"
android:repeatMode="restart"
/>
我改变图像和处理动画的方法:
public void trocaImagemBusca(final AppCompatImageButton button, final Drawable imagemNova, final boolean animaFinal){
final Animation rotateAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate_spinner);
final Animation fadeIn = AnimationUtils.loadAnimation(this, R.anim.fade_in);
final Animation fadeOut = AnimationUtils.loadAnimation(this, R.anim.fade_out);
fadeOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
button.startAnimation(fadeIn);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
fadeIn.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
button.setImageDrawable(imagemNova); // Change to the new image
}
@Override
public void onAnimationEnd(Animation animation) {
if(animaFinal) button.startAnimation(rotateAnimation); // I pass if i wanna animate after the fade in
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
button.startAnimation(fadeOut);
}
我用另一种方法取消了搜索:
button.clearAnimation();
trocaImagemBusca(button,buscaVermelho,false);
Gif,看看我的意思:))
提前致谢。