我正在尝试创建一个在imageview内旋转图像的动画。 该旋转必须在每次重复时增加速度(持续时间),直到持续时间小于一个值。
我尝试的是:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/my_logo"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
android:repeatMode="restart"
android:repeatCount="10"
android:toDegrees="360">
</rotate>
活动:
logo = (ImageView) findViewById(R.id.imageViewToRotate);
rotation = AnimationUtils.loadAnimation(this, R.anim.first_animation_splash);
rotation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
if(animation.getDuration()>100)
animation.setDuration(animation.getDuration()/2);
else
logo.clearAnimation();
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
}
});
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
logo.startAnimation(rotation);
}
}
但它继续旋转相同的持续时间10次....我该如何解决?谢谢!
答案 0 :(得分:0)
试试这个:
onAnimationEnd()
中,更改您的持续时间并再次致电startAnimation()
我的猜测是动画对象的某些(或全部)更改在动画中间无法识别。
答案 1 :(得分:0)
如果您希望发生的是动画在持续时间小于或等于100时结束,则您可以将logo.clearAnimation()
替换为animation.end()
。