代码之家  ›  专栏  ›  技术社区  ›  vkislicins

获取Android上旋转动画的进度

  •  1
  • vkislicins  · 技术社区  · 10 年前

    我需要取消旋转动画,获取被取消的度数,并使用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() 同样的结果

    1 回复  |  直到 10 年前
        1
  •  2
  •   Pedro Oliveira    10 年前

    您可以使用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处理程序只是为了向您显示效果:)