2015-11-04 76 views
0

我想缩放图像,旋转它,向后旋转,然后将其缩放到原始大小。 这是allready工作,但我无法弄清楚如何重复这个动画设置无限(android:repeatCount="infinite"不是为我工作)。Android动画重复 - >图像动画设置

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
android:shareInterpolator="true" 
android:repeatCount="infinite" 
> 
<scale 
    android:fromXScale="1.0" 
    android:toXScale="4.0" 
    android:fromYScale="1.0" 
    android:toYScale="4.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="700" 
    /> 
<rotate 
    android:fromDegrees="0" 
    android:toDegrees="360" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="700" 
    android:duration="2000" 
    /> 
<rotate 
    android:fromDegrees="360" 
    android:toDegrees="0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="2700" 
    android:duration="2000" 

    /> 

<scale 
    android:fromXScale="1.0" 
    android:toXScale="0.25" 
    android:fromYScale="1.0" 
    android:toYScale="0.25" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="4700" 
    android:duration="700" 
    /> 
</set> 

,并在活动:在XML

ImageView imageView = (ImageView) findViewById(R.id.imageView2); 
Animation rotateAndScale = AnimationUtils.loadAnimation(this, R.anim.rotate_z); 
imageView.startAnimation(rotateAndScale); 

回答

1

<set>标记坏的实施,而不是propperly工作。这里完整的补充:Android animation does not repeat

你应该做的就是使用监听器和方法来使用recurency来滚动anim。

public void startAnimation() { 

     View component= findViewById(R.id.imageView2); 
     component.setVisibility(View.VISIBLE); 

     Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotate_z); 
     anim.setAnimationListener(new AnimationListener() { 

      @Override 
      public void onAnimationEnd(Animation arg0) { 
       Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotate_z); 
       anim.setAnimationListener(this); 
       component.startAnimation(anim); 

      } 

      @Override 
      public void onAnimationRepeat(Animation arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationStart(Animation arg0) { 
       // TODO Auto-generated method stub 

      } 

     }); 

     component.startAnimation(anim); 

}