/*listView.setOnScrollListener(new AbsListView.OnScrollListener() { //正在滚动时回调,回调2-3次,手指没抛则回调2次。scrollState = 2的这次不回调 //回调顺序如下 //第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1) 正在滚动 //第2次:scrollState = SCROLL_STATE_FLING(2) 手指做了抛的动作(手指离开屏幕前,用力滑了一下) //第3次:scrollState = SCROLL_STATE_IDLE(0) 停止滚动 @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } //滚动时一直回调,直到停止滚动时才停止回调。单击时回调一次。 //firstVisibleItem:当前能看见的第一个列表项ID(从0开始) //visibleItemCount:当前能看见的列表项个数(小半个也算) //totalItemCount:列表项共数 @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(listView.getChildCount()>0) { boolean isScrollToUp = false; View childAt = listView.getChildAt(firstVisibleItem); int[] location = new int[2]; childAt.getLocationOnScreen(location); Logger.i("TestTang","firstVisibleItem= " + firstVisibleItem + " , y=" + location[1]); if(firstVisibleItem!=mListViewFirstItem) { if(firstVisibleItem>mListViewFirstItem) { Toast.makeText(getContext(),"向上滑动",Toast.LENGTH_SHORT).show(); Logger.i("TestTang", "向上滑动"); isScrollToUp = true; }else{ Toast.makeText(getContext(),"向下滑动",Toast.LENGTH_SHORT).show(); Logger.i("TestTang", "向下滑动"); isScrollToUp = false; } mListViewFirstItem = firstVisibleItem; mScreenY = location[1]; }else{ if(mScreenY>location[1]) { Toast.makeText(getContext(),"-》向上滑动",Toast.LENGTH_SHORT).show(); Logger.i("TestTang", "->向上滑动"); isScrollToUp = true; } else if(mScreenY<location[1]) { Toast.makeText(getContext(),"-》向下滑动",Toast.LENGTH_SHORT).show(); Logger.i("TestTang", "->向下滑动"); isScrollToUp = false; } mScreenY = location[1]; } if(mIsScrollToUp!=isScrollToUp) { onScrollDirectionChanged(mIsScrollToUp); } } } private void onScrollDirectionChanged(boolean isScrollToUp) { } });*/
====Scroll包裹的List View中监听Scroll
最新推荐文章于 2023-06-15 16:45:05 发布
本文介绍了如何在Scroll包裹的ListView中监听滚动事件,包括SCROLL_STATE_TOUCH_SCROLL、SCROLL_STATE_FLING和SCROLL_STATE_IDLE三种状态。同时展示了如何判断滚动方向,向上滑动或向下滑动,并提供了一个简单的回调函数`onScrollDirectionChanged`处理滚动方向改变的逻辑。
摘要由CSDN通过智能技术生成