2014-09-26 2 views
1

Я пытаюсь добиться скрытия зрения относительно прокрутки списка.Слайд-представление относительно прокрутки списка в андроиде?

Как в facebook приложения: -

1.) Когда ListView прокручивается вниз, нижний синий макет (Status, Фото, CheckIn) начинает скользить вверх по отношению к количеству ListView прокручивать и, наконец, становится видимым

2.) Когда прокручивается список, нижняя компоновка скользит вниз и, наконец, невидима.

3.) Когда список прокручивается вверх и вниз одновременно, расположение и скользит вниз и вверх по отношению к нему

Теперь я пытаюсь добиться его перевода, но результат не совсем то же самое : -

public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 

      final int currentFirstVisibleItem = view.getFirstVisiblePosition(); 

      if (currentFirstVisibleItem > mLastFirstVisibleItem) { 
       // Scroll down 
       count = count + 20; 
      } else if (currentFirstVisibleItem < mLastFirstVisibleItem) { 
       // Scroll up 
       count = count - 20; 

      } 
      bottom.setTranslationY(count); 
      mLastFirstVisibleItem = currentFirstVisibleItem; 

     } 

С помощью этого кода вид слайдов, но он не является гладким.

+0

Вы пытались добавить 1 вместо 20? –

+0

1 перевод идет очень медленно. Когда я прокручиваю в facebook, он очень плавный и, прокручивая подачу немного, вид снизу перемещается вверх и вниз довольно быстро –

ответ

0

Я делаю что-то подобное в своем приложении. За исключением того, что я не прокручиваю нижнюю часть, а вместо табуста. Может быть, вы можете взять с собой немного кода отсюда для вас.

listView.setOnScrollListener(new AbsListView.OnScrollListener() 
    { 
     @Override 
     public void onScrollStateChanged(AbsListView absListView, int i) 
     { 
      if (i == SCROLL_STATE_IDLE) 
      { 
       mLastScroll = 0; 
       if (mTabHost.getTranslationY() >= -mTabHost.getHeight()/2) 
        mTabHost.animate().translationY(0).start(); 
       else 
        mTabHost.animate().translationY(-mTabHost.getHeight()).start(); 
      } 
     } 

     @Override 
     public void onScroll(AbsListView absListView, int i, int i2, int i3) 
     { 
      if (absListView.getChildCount() <= 0) 
       return; 
      View c = absListView.getChildAt(0); 
      int scrolly = -c.getTop() + absListView.getFirstVisiblePosition() * c.getHeight(); 
      if (mLastScroll == 0) 
       mLastScroll = (int)(scrolly + Math.round(mTabHost.getTranslationY()/0.7)); 
      float dif = 0; 
      if (mLastScroll - scrolly <= 0) 
       dif = mLastScroll - scrolly; 
      else 
       mLastScroll = scrolly; 

      if (dif * 0.7 < -mTabHost.getHeight()) 
      { 
       dif = Math.round(-mTabHost.getHeight()/0.7); 
       mLastScroll = (int) Math.round(scrolly - mTabHost.getHeight()/0.7); 
      } 
      mTabHost.setTranslationY(Math.round(dif * 0.7)); 
     } 
    }); 
Смежные вопросы