Android动画缩放和闪烁

Android动画缩放和闪烁,android,xml,animation,scale,Android,Xml,Animation,Scale,我对动画中的比例有问题。“平移”工作正常,但当我向动画添加缩放时,它不会返回到开始点,并且在动画再次启动时闪烁 <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <translate android:fromYDelta="-150" android:toYDe

我对动画中的比例有问题。“平移”工作正常,但当我向动画添加缩放时,它不会返回到开始点,并且在动画再次启动时闪烁

 <set xmlns:android="http://schemas.android.com/apk/res/android"  
    android:interpolator="@android:anim/linear_interpolator">

 <translate
 android:fromYDelta="-150"  
 android:toYDelta="150"
 android:fillAfter="true"
 android:duration="1500"

 /> 
     <scale 
         android:fillAfter="true"
        android:fromXScale="1"
        android:fromYScale="1"
        android:toXScale="1.2"
        android:toYScale="1.2"
        android:duration="1500"
        android:pivotX="50%"
        android:pivotY="50%"
        />   
  </set>


 <set xmlns:android="http://schemas.android.com/apk/res/android"  
  android:interpolator="@android:anim/linear_interpolator">

 <translate
 android:fromYDelta="150"     
 android:toYDelta="-150"
 android:fillAfter="true"  
 android:duration="1500"
 android:startOffset="1500"

 />  

     <scale 
         android:fillAfter="true"
        android:fromXScale="1.2"
        android:fromYScale="1.2"
        android:toXScale="1"
        android:toYScale="1"
        android:duration="1500"
        android:pivotX="50%"
        android:pivotY="50%"
        android:startOffset="1500"
        />  
 </set>

Shape是一个xml矩形。

animation.setFillAfter(true)

动画完成后,将强制图像保持在动画位置

如果要将图像返回到起始位置,请将其设置为false


animation.setFillAfter(false)

如果有人想知道答案

    private void animateImage(){

    float x = 1;
    float scale = 1.1f;

        x = (imageViewImage.getHeight()*1.1f - imageViewImage.getHeight())/2;

    imageViewImage.animate().translationY(x).scaleX(scale).scaleY(scale).setDuration(8000).withEndAction(new Runnable() {

            @Override
            public void run() {

                imageViewImage.animate().translationY(0).scaleX(1f).scaleY(1f).setDuration(8000).withEndAction(new Runnable() {

                    @Override
                    public void run() {

                        animateImage();

                    }
                });

            }
        });
    }

很抱歉,它没有返回到起始位置您正在onAnimationEnd中再次启动动画@Bartosz为什么?您是否也从xml文件中删除了任何android:fillAfter=“true”?@Bartosz请参阅Gunjan的评论。您也从xml中删除了吗?我在onAnimationEnd中再次启动动画以重复它
    private void animateImage(){

    float x = 1;
    float scale = 1.1f;

        x = (imageViewImage.getHeight()*1.1f - imageViewImage.getHeight())/2;

    imageViewImage.animate().translationY(x).scaleX(scale).scaleY(scale).setDuration(8000).withEndAction(new Runnable() {

            @Override
            public void run() {

                imageViewImage.animate().translationY(0).scaleX(1f).scaleY(1f).setDuration(8000).withEndAction(new Runnable() {

                    @Override
                    public void run() {

                        animateImage();

                    }
                });

            }
        });
    }