我需要取消旋转动画,获取已取消的度数,然后将度数值设置为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/

10-14 11:47
查看更多