Android ListView监听上滑、下滑、滑到顶部/底部
2015-09-19 23:26
459 查看
监听上下滑有两种方法:
1.用ListView的setOnScrollListener方法
//Activity中的初始化private int lastVisibleItemPosition = 0;// 标记上次滑动位置,初始化默认为0 private boolean scrollFlag = false;// 标记是否滑动
//设置方法
actualListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { //判断状态 switch (scrollState) { // 当不滚动时 case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:// 是当屏幕停止滚动时 scrollFlag = false; // 判断滚动到底部 、position是从0开始算起的 if (actualListView.getLastVisiblePosition() == (actualListView .getCount() - 1)) { //TODO } // 判断滚动到顶部 if (actualListView.getFirstVisiblePosition() == 0) { //TODO } break; case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 滚动时 scrollFlag = true; break; case AbsListView.OnScrollListener.SCROLL_STATE_FLING: // 当用户由于之前划动屏幕并抬起手指,屏幕产生惯性滑动时,即滚动时 scrollFlag = true; break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //当滑动时 if (scrollFlag ) { if (firstVisibleItem < lastVisibleItemPosition) { // 上滑 //TODO } else if (firstVisibleItem > lastVisibleItemPosition) { // 下滑 //TODO } else { return; } lastVisibleItemPosition = firstVisibleItem;//更新位置 } } });
2.用ListView的setOnTouchListener方法
//activity中的初始化private int mTouchSlop; private float mFirstY; private float mCurrentY; private int direction; private boolean mShow = true;
//触发移动事件的最短距离
mTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop();
//具体方法
actualListView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: mFirstY = event.getY(); break; case MotionEvent.ACTION_MOVE: mCurrentY = event.getY(); if (mCurrentY - mFirstY > mTouchSlop) { direction = 0;// down } else if (mFirstY - mCurrentY > mTouchSlop) { direction = 1;// up } if (direction == 1) { //上滑todo } else if (direction == 0) { //下滑todo } break; case MotionEvent.ACTION_UP: break; } return false; } });
相关文章推荐
- Crazy android书中BitmapTest中的问题探讨
- Android-自定义TitleBar 和 BadgeView (消息红点提示)的实现
- Android 利用Service BroadcastReceiver实现小例子
- android程序中读写文件
- android属性动画Property
- Android 实现定时开关机另类实现--BSP级
- 浅析Android中的消息机制
- Android Api Demos登顶之路(七十五)Graphics-->GradientDrawable
- android------创建模拟器时不能点CPU/ABI
- Android0919<二十三>(ViewGroup、Animation、Animator、Layout Animations)
- Android学习——Intent传递数据
- Android无限循环ViewPager
- Android基础学习之SlidingMenu(侧滑菜单)
- AS边学边写——day03简单的用户界面
- android
- 解决com.android.dex.DexException: Multiple dex files define Lcom/google/gson/JsonSerializer;
- 使用Android Studio进行本地单元测试(Local Unit Tests)
- [转]android中drawable资源的解释及例子
- Android之AnimationSet
- 当dialog挡住activity时的 键盘隐藏