2015-05-02 4 views
0

В настоящее время у меня есть Toolbar и ListView под ним. Я хотел бы сделать свой контент более захватывающим, и я хочу сделать это, заставив панель инструментов прокручиваться вверх по экрану, когда вы прокручиваете ListView, например, в виде списка топ-карт Google Play Store. Я использую 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).

Как я могу анимировать панель инструментов со списком/правильно перевести панель инструментов?

+0

Почему вы не устанавливаете анимацию на панели инструментов? – Elltz

+0

Что значит? – TameHog

+0

Не используйте 'toolbar.setY()' use 'toolbar.setTranslationY()' вместо – Kai

ответ

1

Это то, что я имею в виду, когда его время для прокрутки

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

запомнить, чтобы установить слушателя на анимации и установить видимость Унесенные, который должен очистить пространство экрана, но альфа-на анимация сделает это прошло, но заполнить пространство

это 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> 
Смежные вопросы