listview 滑动监听
来源:互联网 发布:le48r31数据 编辑:程序博客网 时间:2024/04/28 00:01
// listview touch and scroll listener boolean isTabShow = true; float downY = 0; boolean isActionDown = false; private int mListViewFirstItem = -1; //listView中第一项的在屏幕中的位置 private int mScreenY = 0; private int screenHeight = 0; private int lastDirection = 0; // 0 向上滑动 1 向下滑动 View.OnTouchListener listViewOnTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: isActionDown = true; downY = event.getY(); Log.d("onTouchListener", "downY:" + downY); break; case MotionEvent.ACTION_MOVE: if (!isActionDown) { // 当为false时就触发了ACTION_MOVE,第一个action需要当成ACTION_DOWN处理 isActionDown = true; downY = event.getY(); Log.d("onTouchListener", "downY:" + downY + " no action down"); } else { float currentY = event.getY(); Log.d("onTouchListener", "downY:" + downY + " currentY::" + currentY + " currentY - downY:" + (currentY - downY)); if (currentY - downY < -20 && isTabShow) { // 向上,隐藏 isTabShow = false; Log.d("onTouchListener", "downY:" + downY + " currentY::" + currentY + " currentY - downY:" + (currentY - downY) + " hide"); } else if (currentY - downY > 20 && !isTabShow && mListViewFirstItem == 0) { isTabShow = true; Log.d("onTouchListener", "downY:" + downY + " currentY::" + currentY + " currentY - downY:" + (currentY - downY) + " show"); } } break; case MotionEvent.ACTION_UP: isActionDown = false;// isActionDown重置 break; default: break; } return false; } }; AbsListView.OnScrollListener listScrollListener = new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(mListViewFirstItem==-1) { return; } if (SCROLL_STATE_IDLE==scrollState ) {// if(Math.abs(mScreenY)-(screenHeight*3)/5>0)// {// listRes.smoothScrollToPosition(mListViewFirstItem + 1);//// }else{// listRes.smoothScrollToPosition(mListViewFirstItem);// }// if(listRes.getFirstVisiblePosition() == 0 && lastDirection == 1) {// mMPHBarChart.setVisibility(View.VISIBLE);// } } } @Override public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) { if(listRes.getAdapter()==null || listRes.getChildCount()==0) { return; } View visibleFirstChild = (View) listRes.getChildAt(firstVisibleItem); if(visibleFirstChild==null) { return; } int[] location = new int[2]; visibleFirstChild.getLocationOnScreen(location); Log.d("zzq", "first="+firstVisibleItem+" , screenY="+location[1]+",deltY="+(Math.abs(mScreenY)-(screenHeight*3)/5)); if(firstVisibleItem!=mListViewFirstItem) { if(firstVisibleItem>mListViewFirstItem) { Log.d("zzq", "between item 向上滑动 hide mpchart"); // mMPHBarChart.setVisibility(View.GONE); }else{ Log.d("zzq", "向下滑动"); } }else{ if(mScreenY>location[1]) { Log.d("zzq", "->finger in item 向上滑动 hide mpchart"); //mMPHBarChart.setVisibility(View.GONE); } else if(mScreenY<location[1]) { Log.d("zzq", "->向下滑动"); } } if(firstVisibleItem == 0) { // mMPHBarChart.setVisibility(View.VISIBLE); Log.d("zzq", "first visible ==0 show mpchart"); } mListViewFirstItem = firstVisibleItem; mScreenY = location[1]; } };
0 0
- android listview 滑动监听
- ListView上下滑动监听
- listview 滑动监听
- ListView的滑动监听
- ListView滑动监听
- ListView监听滑动距离
- 监听ListView滑动到底部
- listView监听上下滑动事件
- 精确监听ListView滑动到底部
- Android中监听ListView滑动到底部
- 精确监听 Android ListView 滑动到底部
- ListView滑动到底部的监听
- Android中监听ListView滑动到底部
- ListView,ScrollView,RecyclerView上下滑动监听
- Listview 添加OnScrollListener 监听滑动到底部
- ListView使用技巧(三):滑动监听
- ListView的置顶操作与滑动监听
- ListView的滑动监听(二)
- GDAL2.0编译之添加HDF库编译C#版本
- JetBrains C++ IDE 推荐
- IntelliJ IDEA IDEtalk
- 天声人語 20160125 琴奨菊遅咲きの賜杯
- android 字体TypeFace设置.
- listview 滑动监听
- 设计模式之:外观模式(Facade Pattern)
- 日经春秋 20160125
- 转自知乎的吉他学习篇
- Jmeter测试:JDBC请求
- 设计模式读书笔记-----中介者模式
- UIImagePickerController 文字英文状态修改为中文
- oracle-备份方案之(EXP+任务计划)
- 设计模式总结