Android прокрутки вверх скрыть вид и прокрутить вниз показать эффект вида, как твиттер

Как сделать эффект прокрутки, например твиттер, при прокрутке вверх, вверх, чтобы закрыть вкладку viewpager (Главная, Обнаружение, активность). Или эффект, похожий на прокрутку facebook, в то время как просмотр прокрутки вверх по экрану (статус, фотография, проверка) при прокрутке вниз показывает опцию. Любой пример ссылки будет делать, пожалуйста, помогите.

Solutions Collecting From Web of "Android прокрутки вверх скрыть вид и прокрутить вниз показать эффект вида, как твиттер"

Простое решение:

public abstract class OnScrollObserver implements AbsListView.OnScrollListener { public abstract void onScrollUp(); public abstract void onScrollDown(); @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } int last = 0; boolean control = true; @Override public void onScroll(AbsListView view, int current, int visibles, int total) { if (current < last && !control) { onScrollUp(); control = true; } else if (current > last && control) { onScrollDown(); control = false; } last = current; } 

Применение:

 listView.setOnScrollListener(new OnScrollObserver() { @Override public void onScrollUp() { } @Override public void onScrollDown() { } }); 

EDIT: лучше, у вас есть эта библиотека https://github.com/ksoichiro/Android-ObservableScrollView

Вы можете посмотреть этот https://github.com/LarsWerkman/QuickReturnListView

Источник: https://stackoverflow.com/a/25304575/244702

Для этого нет быстрого примера. Но вы можете следить за тем, как вы прокручиваете и показываете или скрываете представление соответственно

Например, получить первую видимую позицию ListView отслеживать это, и если она меньше, то прежде чем вы узнаете, что прокручиваете этот путь, вы можете показать представление. Если он больше, то скройте представление.

Это простой подход, если вы хотите уточнить, что вам нужно работать с onTouchListeners и y координатами движения.

http://developer.android.com/reference/android/widget/ListView.html

Это моя собственная реализация: обратите внимание:

  • Вид, который нужно скрывать, должен быть фиксированной высотой
  • Мы не скрываем точку зрения Visiblity.GONE
  • Мы устанавливаем конечную высоту в 0px

Вот код:

  //Your view which you would like to animate final RelativeLayout yourViewToHide = (yourViewToHideativeLayout) findViewById(R.id.topWrapper); //The initial height of that view final int initialViewHeight = yourViewToHide.getLayoutParams().height; listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //Try catch block for NullPointerExceptions try{ //Here is a simple delay. If user scrolls ListView from the top of the screen to the bottom then continue if(firstVisibleItem % visibleItemCount == 0) { //Here we initialize the animator, doesn't matter what values You will type in ValueAnimator animator = ValueAnimator.ofInt(0, 1); //if Scrolling up if (fastScrollSB.getProgress() > view.getFirstVisiblePosition()){ //Getting actual yourViewToHide params ViewGroup.LayoutParams params = yourViewToHide.getLayoutParams(); if (!animator.isRunning()) { //Setting animation from actual value to the initial yourViewToHide height) animator.setIntValues(params.height, initialViewHeight); //Animation duration animator.setDuration(500); //In this listener we update the view animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { ViewGroup.LayoutParams params = yourViewToHide.getLayoutParams(); params.height = (int) animation.getAnimatedValue(); yourViewToHide.setLayoutParams(params); } }); //Starting the animation animator.start(); } System.out.println("Scrolling up!"); //If not scrolling } else if (fastScrollSB.getProgress() == view.getFirstVisiblePosition()) { System.out.println("Not Scrolling!"); //If scrolling down } else if (fastScrollSB.getProgress() < view.getFirstVisiblePosition()){ //Getting actual yourViewToHide params ViewGroup.LayoutParams params = yourViewToHide.getLayoutParams(); if (!animator.isRunning()) { //Setting animation from actual value to the target value (here 0, because we're hiding the view) animator.setIntValues(params.height, 0); //Animation duration animator.setDuration(500); //In this listener we update the view animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { ViewGroup.LayoutParams params = yourViewToHide.getLayoutParams(); params.height = (int) animation.getAnimatedValue(); yourViewToHide.setLayoutParams(params); } }); //Starting the animation animator.start(); } System.out.println("Scrolling down!"); } } }catch (Exception e){ e.printStackTrace(); } } });` 

Надеюсь, это соответствует вашим потребностям 🙂