Android:使用view.setY()查看过渡动画不起作用

时间:2016-06-09 20:03:47

标签: android animation android-appbarlayout

我试图通过使用valueAnimator更改视图的位置(startY到endY)来为视图设置动画。这是我的代码

    ValueAnimator valueAnimator = ValueAnimator.ofFloat(startY, endY);
    valueAnimator.setDuration(150);
    valueAnimator.setInterpolator(new DecelerateInterpolator());

    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {

            float newY = (Float) animation.getAnimatedValue();

            view.setY(newY);

            // Do some other related ui changes for each y (Important)

        }

    });

    valueAnimator.start();

此代码适用于一些较新的Android版本。但是,它不适用于许多其他Android版本。因此,视图的y位置永远不会更新。视图将继续保持不变。

我知道,我可以使用TransitionAnimation类,它运行良好(已经尝试过)。但是,TransitionAnimation类并不像ValueAnimator类中的onAnimationUpdate()那样为每个新的y值提供监听器。因此,当y更新时,我无法进行其他相关的ui更改。所以,我必须坚持使用ValueAnimator类。

更多信息:我试图制作动画的视图是AppBarLayout和AppBarLayout下方的片段。我没有使用appBarLayout.setExpanded()的原因是因为动画太慢而谷歌还没有发布新的更新来控制setExpanded()的速度。

任何建议/工作都将不胜感激。谢谢

0 个答案:

没有答案