Android 防止在取消时重置RotateAnimation
我有一个简单的Android 防止在取消时重置RotateAnimation,android,animation,frame,rotateanimation,Android,Animation,Frame,Rotateanimation,我有一个简单的RotateAnimation来无限期地设置ImageView的动画,直到我停止它。我的动画设置如下: Animation spin = new RotateAnimation(0.0f, 1800.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); spin.setInterpolator(new LinearInterpolator()); spin.setRe
RotateAnimation
来无限期地设置ImageView
的动画,直到我停止它。我的动画设置如下:
Animation spin = new RotateAnimation(0.0f, 1800.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
spin.setInterpolator(new LinearInterpolator());
spin.setRepeatCount(Animation.INFINITE);
spin.setDuration(5000);
imageView.setAnimation(spin);
当我调用
imageView.cancelAnimation()
时,是否可以将动画“冻结”在其结束的任何帧上(或其处于的任何角度)与其将其重置为第一帧,不如将图像内容包装在可旋转的中,并将其设置为图像视图,而不是使用动画。通过使用一个简单的处理程序反复调用setImageLevel()
来调整旋转角度,仍然可以设置转换动画
当需要冻结动画时,只需停止发布到处理程序
,图像将保持其上次设置的级别值。然后,如果愿意,可以通过恢复到处理程序的POST来重新启动
另一个选项是创建自定义的视图组
,并使用getChildStaticTransformation()
将自定义转换应用于子ImageView
。您仍然可以手动处理动画步骤,因此可以在任意点启动/停止,但动画系统使用转换
为视图设置动画,以便获得更接近该效果的结果
HTH我有一个应用程序,在到达确定的角度后必须保持其旋转位置。我四处搜索了很长一段时间,最终发现调用setFillAfter()方法。这将阻止旋转复位
RotateAnimation rotate = new RotateAnimation(startingPoint, value, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
image.setAnimation(rotate);
rotate.setDuration(ROTATION_INTERVAL);
rotate.setFillAfter(true);
我想这是可行的。唯一的问题是,当我尝试将它们用作不确定的进度条时,rotatedravable
s并没有那么平滑。你知道如何提高不确定进度条的帧速率或速度吗?不公开ProgressBar
使用一个AnimatedRotateDrawable
,该类具有这些属性,但是一个隐藏类。我添加了另一个用于转换视图的选项。要获得更平滑的效果,您可能需要手动调用插值器上的方法,以便知道在每一步调整动画的程度。是否有使用RotatedRavable的示例?我在android SDK中找不到任何。