我需要取消旋转动画,获取已取消的度数,然后将度数值设置为fromValue来设置新的动画。
我尝试了以下方法,以在调用cancel时获得动画的进度:
@Override
public void onAnimationEnd(Animation animation) {
mAnimatingRotation = false;
Transformation transformation = new Transformation();
animation.getTransformation(AnimationUtils.currentAnimationTimeMillis(),transformation);
Matrix matrix = transformation.getMatrix();
}
但是,我没有获得与动画对象内部相同的转换对象。我得到的是这样的:
Transformation{alpha=1.0 matrix=[1.0, -0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}
我认为
AnimationUtils.currectAnimationTimeMillis()
中的问题不是我应该传递给该方法的时间。我也尝试过传递具有相同结果的System.currentTimeMillis()
最佳答案
您可以使用ViewPropertyAnimator在视图上保留其值。这是一个简单的示例:
myView.animate().rotation(90).setDuration(5000);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
myView.animate().cancel();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
myView.animate().rotation(90).setDuration(3000);
}
}, 2000);
}
}, 2000);
这会将视图旋转到90度。初始持续时间为5秒。它将在2秒后停止动画,并在2秒后将再次继续动画。
p.s处理程序只是为了向您展示效果:)
关于android - 在Android上获得旋转动画的进度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34927799/