使用 ListView 动画化工具栏

Animating toolbar with ListView

目前我下面有一个 Toolbar 和一个 ListView。我想让我的内容更加身临其境,我希望通过在滚动 ListView 时使工具栏向上滚动出屏幕来实现这一点,就像 Google Play 商店的顶部图表视图一样。我正在使用 https://github.com/ksoichiro/Android-ObservableScrollView 来获取滚动列表的时间,但现在我的问题是如何在滚动列表时翻译工具栏?我不想使用 onUpOrCancelMotionEvent() 方法,因为它仅在用户释放 his/her 手指时触发,而不是在我滚动时触发。到目前为止我得到的代码:

lv.setScrollViewCallbacks(new ObservableScrollViewCallbacks() {
        int last = -1;

        @Override
        public void onScrollChanged(int i, boolean b, boolean b2) {
            if (b2) {
                if (last == -1) {
                    last = i;
                } else {
                    int dy = i - last;

                    if(toolbar.getY() > -TOOLBAR_HEIGHT && dy > 0) {
                        if(toolbar.getY() - dy < -TOOLBAR_HEIGHT)
                            toolbar.setY(-TOOLBAR_HEIGHT);
                        else
                            toolbar.setY(toolbar.getY() - dy);

                        tabs.setY(toolbar.getY() + TOOLBAR_HEIGHT);
                    }else if(toolbar.getY() < 0 && dy < 0) {
                        if (toolbar.getY() - dy > 0)
                            toolbar.setY(0);
                        else
                            toolbar.setY(toolbar.getY() - dy);

                        tabs.setY(toolbar.getY() + TOOLBAR_HEIGHT);
                    }

                    last = i;
                }
            }
        }
        ...
}

现在可以了,但是会在原始工具栏所在的位置呈现一个白色矩形,如下所示:http://i.imgur.com/akY7hly.gif(这是一个 gif)。

如何使用列表视图为工具栏设置动画/正确翻译工具栏?

这就是我的意思,滚动的时候

Animation anim = AnimationUtils.loadAnimation(
                            getBaseContext(), R.anim.push_up_out)
yourtoolbar.startAnimation(anim);

记得在你的动画上设置一个监听器并将 Visibility 设置为 GONE 即清除屏幕 space,但是动画上的 alpha 会使它消失但填写 space

这是R.anim.push_up_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<translate
    android:duration="600"
    android:fromYDelta="0"
    android:toYDelta="-100%p" />

<alpha
    android:duration="600"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />

</set>