我们需要有一个动画来将标题栏视图推出屏幕并将其拉入屏幕。标题栏位于屏幕顶部。
要做到这一点,动画不流畅的屏幕会花费很多特定的动画。我这样实现:
ValueAnimator animDown = ValueAnimator.ofFloat(1f, 0f);
animDown.setDuration(300);
params = (RelativeLayout.LayoutParams) titleView.getLayoutParams();
animDown.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float currentValue = (float) animation.getAnimatedValue();
newHeight = -(int) (titleView.getHeight() * currentValue);
if (newHeight != lastHeight) {
params.setMargins(0, newHeight, 0, 0);
titleView.requestLayout();
}
lastHeight = newHeight;
}
});
这在某些地方工作得很好但不在这里,因为我发现回调方法onAnimationUpdate
在动画期间被调用很少次(比如6-8次),这意味着一帧更新成本超过40ms,看起来太迟钝了。
我的问题是:有没有办法增加回调方法onAnimationUpdate
的频率,还是有其他方法可以更顺利地完成这个动画?
以前我们正在使用其他动画,例如淡出,但效果很好,但push out animation
这里花费太多,而标题视图下面的网格视图列表也很重。