判断listview是上滑还是下滑的方法

方法一:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何保证消息不被重复消费~~~~~(如何保证消息队列的幂等性)

分析&#xff1a;这个问题其实换一种问法就是&#xff0c;如何保证消息队列的幂等性&#xff1f;这个问题可以认为是消息队列领域的基本问题。换句话来说&#xff0c;是在考察你的设计能力&#xff0c;这个问题的回答可以根据具体的业务场景来答&#xff0c;没有固定的答案。 回…

SpringBoot:搭建第一个Web程序

本文简单介绍一下spingBoot搭建web程序的流程&#xff0c;希望对入门学习spingBoot的朋友有所帮助。本文采用的开发工具是IDEA。 1、打开IDEA&#xff0c;创建项目。 2、点击创建项目&#xff0c;进入下一步&#xff0c;具体按照画红框的操作。 3、点击下一步 4、点击下一步&am…

java uuid 效率_java uuid第一次性能

在java中产生uuid的方式是使用java.util.UUID。UUID.randomUUID().toString();我在测试redis性能时&#xff0c;使用uuid产生测试数据&#xff0c;发现多线程测试redis的rpush接口的时候&#xff0c;性能老是上不去。 查看cpu利用率也不高&#xff0c;网卡流量也不大。就是tps上…

第八周----补

这一周真不知道过得是什么&#xff0c;除了上课&#xff0c;感觉相当的混乱。 整个人每天都是处在消沉状态&#xff0c;连这次作业都没能很好的补上。 我的心情也像天气一样变得不稳定&#xff0c;一会晴天一会雨天的&#xff0c;更多的就是闷闷的感觉。 总会说事情很多忙的头晕…

SpringBoot:application.properties基本的参数配置

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

java method 注释_Java注解

Java注解注解概述3、注解3.1、注解&#xff0c;或者叫做注释类型&#xff0c;英文单词是&#xff1a;Annotation疑问&#xff1a;注解到底是干啥的&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;3.2、注解Ann…

盘点八个程序员必备的代码编辑器

一个好的代码编辑器不仅能使代码变得更美观&#xff0c;增强其可读性&#xff0c;同时也能迅速推进程序员的工作进程&#xff0c;延长代码的生命周期。 对于新手和有经验的程序员&#xff0c;推荐使用的代码编辑器也均有不同。小楼总结了一些好用的代码编辑器&#xff0c;还在纠…

C#OOP之二 变量和表达式

2.1 C#的基本语法 C#代码的外观和操作方式与C和Java非常相似。初看起来&#xff0c;其语法比较混乱&#xff0c; 不像书面英语和其他语言。但是&#xff0c;在C#编程中&#xff0c;使用的样式是比较清晰的&#xff0c;不用花太多的力气就可以编写出可读性很强的代码。 与其他语…

java异步多线程 判断线程状态_java多线程和异步回调

在实际开发过程中遇到的多线程情况不多&#xff0c;但是在生产环境中多线程是最基本的情况&#xff0c;java面试时也会考到&#xff0c;所以看看多线程的知识还是很有必要的。Thread&#xff0c;Runnable&#xff0c;Callable&#xff0c;Future&#xff0c;FutureTask,Executo…

C#调用API弹出打印机属性对话框

调用api弹出打印机属性对话框 Author:vitoriatangFrom:Internet.NET Framework封装了很多关于打印的对话框&#xff0c;比如说PrintDialog, PageSetupDialog. 但是有的时候我们还需要关心打印机属性对话框&#xff0c;那么就可以调用API来解决这个问题。有几个API函数与之相关P…

Java中异常

首先我们要知道RuntimeException与Exception之间的关系与他们分别的含义&#xff1a; ①在Java中异常的基类为Throwable&#xff0c;他有两个子类Exception与Errors&#xff0c;同时RuntimeException就是Exception的子类&#xff1b; ②RuntimeException&#xff0c;即运行时异…

第九周作业

你最喜欢做什么--兴趣问题清单•根据迄今为止已有的经历&#xff0c;你真正喜欢从事的工作是什么&#xff1f;动漫设计师或者网页设计师•休暇时间你最爱从事的活动是什么&#xff1f;看动漫•什么令你精疲力尽&#xff1f;什么能激发你的活力&#xff1f;看动漫•你是重视质量…

SQLServer数据库获取重复记录中日期最新的记录

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

循环的时候去删除集合中的元素 java.util.ConcurrentModificationException

使用for循环&#xff0c;删除集合中的元素&#xff0c;会报错 java.util.ConcurrentModificationException 只能通过迭代器 iterator删除 1&#xff1a;在while循环中使用iterator迭代器删除集合中元素 2:在for循环中使用iterator迭代器删除集合中元素 3&#xff1a;使用for循…

jquery ajax load

jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法。 load() 方法从服务器加载数据&#xff0c;并把返回的数据放入被选元素中。 语法&#xff1a; $(selector).load(URL,data,callback); $("button").click(function(){$("#div1").load(&qu…

计算机网络硬件设备组成笔记

网络是计算机或类似计算机的网络设备的集合&#xff0c;它们之间通过各种传输介质进行连接。无论设备之间如何连接&#xff0c;网络都是将来自于其中一台网络设备上的数据&#xff0c;通过传输介质传输到另外一台网络设备上。 本节将基于这个过程讲解网络的组成。 网卡 网卡也被…

java记事本复制粘贴_Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能...

这篇文字将要学习以下知识点&#xff1a;1.如何给JButton按钮添加鼠标点击事件监听器#1.addMouseListener(MouseListener l) 给JButton添加一个鼠标点击监听器l2.文本区控件JTextArea 中的方法(剪切&#xff0c;复制&#xff0c;粘贴&#xff0c;删除&#xff0c;全选 功能的…

学习进度条07

第八周所花时间28小时代码量 50博客量7篇了解到的知识点 java中swing控件可以用来设置图形化界面&#xff0c;让界面更加好看&#xff1b; 可以引用相关的包和类&#xff0c;来改变图形化的界面&#xff0c;让界面更加美观。 转载于:https://www.cnblogs.com/Daddy/p/5427670.h…