【发布时间】:2014-08-06 18:06:48
【问题描述】:
我有一个应用旋转动画的图像视图。动画效果很好。在着陆时,我尝试使用 cancel() 停止旋转动画,使用 reset() 重置动画并使用 clearAnimation() 清除视图上的动画。但是动画又回到了原来的位置。如何使用触地事件发生时的值停止动画并从停止的位置重新启动?
我的动画在xml中定义如下
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="360"
android:toDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="200000"
android:repeatMode="restart"
android:repeatCount="infinite"
android:interpolator="@android:anim/linear_interpolator"/>
我正在尝试使用以下代码停止动画
private void stopAnimation(){
mRotateAntiClockwiseAnimation.cancel();
mRotateAntiClockwiseAnimation.reset();
imageView.clearAnimation();
mRotateAntiClockwiseAnimator.end();
mRotateAntiClockwiseAnimator.cancel();
stopAnimationForImageButton();
}
我正在使用以下代码在我的视图上设置动画
mRotateAntiClockwiseAnimation = AnimationUtils.loadAnimation(context, R.anim.rotate_anticlockwise);
mRotateAntiClockwiseAnimation.setFillEnabled(true);
mRotateAntiClockwiseAnimation.setFillAfter(true);
imageView.setAnimation(mRotateAntiClockwiseAnimation);
mRotateAntiClockwiseAnimation.startNow();
imageView.invalidate();
如您所见,即使使用 cancel() 或 reset() 也无助于在动画被触碰的地方停止动画。任何指针都会有所帮助
【问题讨论】:
-
贴出你使用动画xml的代码
-
@Rod_Algonquin:更新了我用动画设置视图的代码
-
也发布 stopAnimationForImageButton 方法
-
stopAnimationForImageButton() 只是停止我在布局上的图像按钮的对象动画师,它也应该与图像视图一起移动。
private void stopAnimationForImageButton() { for(ObjectAnimator objectAnimator : mObjectAnimatorList) { objectAnimator.cancel(); objectAnimator.end(); } mObjectAnimatorList.clear(); } -
@Rod_Algonquin:我已经发布了相关代码。你能帮忙指点一下吗?或者你认为这里有什么问题?