我试图通过使用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()的速度。
任何建议/工作都将不胜感激。谢谢