方法一:

用setOnScrollListener(new AbsListView.OnScrollListener())来实现,判断滑动后显示的第一个条目 ,与滑动前的第一个条目的大小来判断,

这种方法逻辑简单,但是必须要滑动到当前第一条目隐藏后才能起作用,当listview的单个条目的高度很大时,这种方法就不好使了。代码如下:

lv_shiti_content.setOnScrollListener(new AbsListView.OnScrollListener() {boolean scrollFlag=false;//标记是否滑动boolean isFirst=true;//标记第一次进入,因为第一次进来lastVisibleItemPosition默认为0,// 此时如果listview的第一个显示的条目不是第一个(下表为0),则往下滑也会出现firstVisibleItem>lastVisibleItemPosition的情况//所以第一次进入时不做操作,第二次进来已经给lastVisibleItemPosition赋值,就可以判断了int lastVisibleItemPosition;//标记上次的显示位置
            @Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(scrollState==1||scrollState==2){//其中1 表示滑动,等同于 AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL// 2 表示惯性滑动  等同于 AbsListView.OnScrollListener.SCROLL_STATE_FLINGscrollFlag=true;}else{scrollFlag=false;}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {if(!isFirst){if(firstVisibleItem>lastVisibleItemPosition){//执行向上滑动时要做的逻辑
                }lastVisibleItemPosition=firstVisibleItem;//记录当前条目isFirst=false;}}});

方法二:

使用setOnTouchListener(new View.OnTouchListener()方法,这种方法,只要有一点移动距离就可以判断。

特别说明:android控件的事件传递时是默认直接传递到最里层,只有在上下滑动的时候才会中断事件,所以我们获取到的第一个事件是move事件。

而我们的逻辑也是在move事件中做的,这就造成获取的lasty和movey的值是相同的(看下面代码)

所以我们要判断,只有第一次进来的时候获取lasty。以后都是lasty直接记录当前的movey。不然每次的lasty和movey永远是相同的值。

lv_shiti_content.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if(isFirstClick){//只有第一次进来的时候用获取位置的方法给lastY赋值,后面的值都是上一次的move坐标//如果不做此判断,每次的lasty和movey是相同的值,这是因为在此处获取的的y值其实就是move的值,//是因为在listview中,down事件是默认传递进去给条目的,在此处无法响应down事件。lastY=event.getY();isFirstClick=false;//初始值是true,此处置为false。}switch (event.getAction()){case MotionEvent.ACTION_MOVE:float moveY = event.getY();Log.e("moveY_START",moveY+"");if(moveY< lastY){if(!NewPageisOpen){//初始值为false ,由于move方法会不断调用,为防止多次打开页面。Intent intent = new Intent(getActivity(), ShitidianTestActivity.class);startActivity(intent);NewPageisOpen = true;}}lastY=moveY;break;}return false;}});

转载于:https://www.cnblogs.com/epmouse/p/5409134.html

判断listview是上滑还是下滑的方法相关推荐

  1. js判断手指的上滑,下滑,左滑,右滑,事件监听

    2019独角兽企业重金招聘Python工程师标准>>> 原理:1:当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和staerY: 2:当触发touchmo ...

  2. 判断滚动条是上滑还是下滑

    var beforeScrollTop = document.body.scrollTop;$(window).scroll(function(){var afterScrollTop = docum ...

  3. android上滑隐藏动画,ListView上滑和下滑,显示和隐藏Toolbar的实现方法

    1.准备Toolbar 先隐藏系统自带的actionbar,在AndroidManifest.xml文件标签中: android:theme="@style/Theme.AppCompat. ...

  4. 移动端html右滑空白,移动端之touch事件_上滑、下滑、左滑和右滑

    开发app的前端框架有哪些 移动 原理:第一,当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY:第二,当触发touchmove事件时,在获取此时手指的横坐 ...

  5. JS判断移动端上拉和下滑

    根据触碰屏幕开始时候的坐标位置和结束时候在竖直方向(Y轴)的坐标位置,判断方式是上拉还是下滑 var startY; //定义开始时候的坐标位置document.addEventListener('t ...

  6. js判断手指上滑和下滑

    <script>var startX = 0,startY = 0;function touchStart(evt){try{var touch = evt.touches[0], //获 ...

  7. 聊天软件中的窗口上滑和下滑提示上下线

    聊天软件中右下角窗口上滑提示有好友上线,窗口下滑提示有好友下线. 在 Qt 下实现此功能,用到的类有 QPoint  QTimer mainwindow.h 1 #ifndef MAINWINDOW_ ...

  8. vue js判断长按触发及手指的上滑、下滑、左滑、又滑

    <span class="btn" @touchstart="touchstart()" @touchmove="touchmove()&quo ...

  9. 检测鼠标上滑还是下滑

    $(function () {var scrollFunc = function (e) {e = e || window.event;var t1;var t2;if (e.wheelDelta) ...

最新文章

  1. linux查看内核版本、系统版本、系统位数(32or64)
  2. 检索数据_11_限制返回的行数
  3. repeater填充html,使用动态绑定到对象列表的ASP.NET Repeater创建HtmlTable
  4. webpack+es6+node+react初实践及总结
  5. T-SQL 视图 事物 备份还原 分离附加
  6. 图的深度优先遍历和广度优先遍历(附例题)
  7. 【知识图谱系列】基于生成式的知识图谱预训练模型GPT-GNN
  8. 【Gym-102059 G】Fascination Street【亏欠型DP思想】
  9. ufw命令的基本使用
  10. 矩阵连乘问题算法思想_动态规划之矩阵连乘问题
  11. Go语言核心之美-必读
  12. 淘宝直播弹幕API接口协议
  13. 小学计算机打字比赛教案,打字比赛活动方案
  14. 戴尔电脑录屏怎么录?这3个方法,教你轻松录屏
  15. SpringClout 入门笔记
  16. JS打包工具rollup——完全入门指南
  17. 双目摄像头——活体检测
  18. 七麦数据analysis参数算法还原
  19. Fragment has not been attached yet 解决方法及源码详解
  20. AutoVue软件在电子制造行业…

热门文章

  1. Vue自定义指令原来这么简单
  2. 《浅谈架构之路:前后端分离模式》 - 山人行 - 博客园
  3. mongoose 笔记
  4. 汇编 --- EXE文件 的程序的加载过程
  5. vue --- 使用animate.css实现动画
  6. Solr管理页面 上
  7. linux下的启停脚本
  8. 杨幂掐点祝福唐嫣,打破不和传言,情感营销还能这么玩?
  9. 电池技术多年没有较大发展,成为移动设备最大制约
  10. 52.4. APC Cache (php-apc - APC (Alternative PHP Cache) module for PHP 5)