目前我下面有一个Toolbar
和一个ListView
。我想让我的内容更加身临其境,我希望通过在滚动ListView
时将工具栏向上滚出屏幕,就像Google Play商店的顶级图表视图一样。我在滚动列表时使用https://github.com/ksoichiro/Android-ObservableScrollView来获取,但现在我的问题是如何在滚动列表时翻译工具栏?我不想使用onUpOrCancelMotionEvent()
方法,因为这只是在用户松开他/她的手指时触发,而不是在我滚动时触发。到目前为止我得到的代码:
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)。
如何使用listview为工具栏设置动画/正确翻译工具栏?
答案 0 :(得分:1)
这就是我的意思,当它滚动的时间
Animation anim = AnimationUtils.loadAnimation(
getBaseContext(), R.anim.push_up_out)
yourtoolbar.startAnimation(anim);
记得在你的动画上设置一个监听器并将Visibility设置为GONE 即清除屏幕空间,但动画上的alpha会使它消失但填充空间
这是 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>