2015-05-02 38 views
0

當前我有一個Toolbar和一個ListView在它下面。我想讓我的內容更加身臨其境,我希望通過在滾動ListView時讓工具欄向上滾動屏幕,就像Google Play商店的熱門圖表視圖一樣。我正在使用https://github.com/ksoichiro/Android-ObservableScrollView獲取滾動列表的時間,但現在我的問題是如何在滾動列表時翻譯工具欄?我不想使用onUpOrCancelMotionEvent()方法,因爲只有在用戶釋放他/她的手指時觸發該方法,而不是在我滾動時觸發。到目前爲止,我已經得到的代碼:使用ListView動畫工具欄

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

爲什麼不在「工具欄」上設置動畫? – Elltz

+0

你是什麼意思? – TameHog

+0

不要使用'toolbar.setY()'使用'toolbar.setTranslationY()'而不是 – Kai

回答

1

這就是我的意思是,當它的時間滾動

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

記得設置你的動畫監聽器,並設置能見度GONE這是清除屏幕空間,但阿爾法上動畫將使它消失,但填充空間

這是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>