动画视图在另一个动画之前返回到原始旋转

时间:2016-07-30 18:47:11

标签: android android-animation android-drawable

我有一个动画可绘画的人有树动画:淡出,淡入和旋转。

这三个是因为我更改了一个圆形可绘制的搜索可绘制(以表明搜索正在进行)

问题是,当我改回“搜索”可绘制时,他与已经消失的圆圈处于相同的旋转状态,经过一些毫秒后,他回到了正确的位置。

在尝试淡入淡出动画之前,我尝试过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,看看我的意思:))

提前致谢。

enter image description here

0 个答案:

没有答案