Android--判断listview上下滑动的方法
Posted 丨搬砖_程序猿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android--判断listview上下滑动的方法相关的知识,希望对你有一定的参考价值。
1 elv_music_res_fragment.setOnScrollListener(new AbsListView.OnScrollListener() { 2 private int mLastFirstPostion = 0; 3 private int mLastFirstTop = 0; 4 private int touchSlop = ViewConfiguration.get(getActivity()).getScaledTouchSlop(); 5 6 @Override 7 public void onScrollStateChanged(AbsListView view, int scrollState) { 8 9 } 10 11 @Override 12 public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 13 int currentTop; 14 15 View firstChildView = absListView.getChildAt(0); 16 if (firstChildView != null) { 17 currentTop = absListView.getChildAt(0).getTop(); 18 } else { 19 //ListView初始化的时候会回调onScroll方法,此时getChildAt(0)仍是为空的 20 return; 21 } 22 //判断上次可见的第一个位置和这次可见的第一个位置 23 if (firstVisibleItem != mLastFirstPostion) { 24 //不是同一个位置 25 if (firstVisibleItem > mLastFirstPostion) { 26 // 下 27 if (rg_container_resFragment.getVisibility() != View.GONE) { 28 rg_container_resFragment.setVisibility(View.GONE); 29 } 30 } else { 31 // 上 32 if (rg_container_resFragment.getVisibility() != View.VISIBLE) { 33 rg_container_resFragment.setVisibility(View.VISIBLE); 34 } 35 } 36 mLastFirstTop = currentTop; 37 } else { 38 //是同一个位置 39 if (Math.abs(currentTop - mLastFirstTop) > touchSlop) { 40 //避免动作执行太频繁或误触,加入touchSlop判断,具体值可进行调整 41 if (currentTop > mLastFirstTop) { 42 // 上 43 if (rg_container_resFragment.getVisibility() != View.VISIBLE) { 44 rg_container_resFragment.setVisibility(View.VISIBLE); 45 } 46 } else if (currentTop < mLastFirstTop) { 47 // 下 48 if (rg_container_resFragment.getVisibility() != View.GONE) { 49 rg_container_resFragment.setVisibility(View.GONE); 50 } 51 } 52 mLastFirstTop = currentTop; 53 } 54 } 55 mLastFirstPostion = firstVisibleItem; 56 } 57 });
以上是关于Android--判断listview上下滑动的方法的主要内容,如果未能解决你的问题,请参考以下文章
android中上下滑动listview,顶端和底端布局可以隐藏和显示
android中listview如何支持上下滑动,左右滑动且左右滑动时可以指定固定列数
Android 解决之NestedScrollView嵌套ListView后不能上下滑动的问题