用于将标题视图推出/拉出屏幕的动画

时间:2016-12-01 06:38:53

标签: android performance animation

我们需要有一个动画来将标题栏视图推出屏幕并将其拉入屏幕。标题栏位于屏幕顶部。

要做到这一点,动画不流畅的屏幕会花费很多特定的动画。我这样实现:

        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这里花费太多,而标题视图下面的网格视图列表也很重。

0 个答案:

没有答案