判断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;//标记上次的显示位置
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState==1||scrollState==2){
//其中1 表示滑动,等同于 AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL
// 2 表示惯性滑动 等同于 AbsListView.OnScrollListener.SCROLL_STATE_FLING
scrollFlag=true;
}else{
scrollFlag=false;
}
}
@Override
public 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() {
@Override
public 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;
}
});
判断listview是上滑还是下滑的方法的更多相关文章
- js判断手指的上滑,下滑,左滑,右滑,事件监听
原理:1:当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和staerY: 2:当触发touchmove事件的时候,再获取此时手指的横坐标moveEndX和纵坐标moveEn ...
- touch监听判断手指的上滑,下滑,左滑,右滑,事件监听
判断滑动的方向和距离,来实现一定的效果,比如返回上一页等等 <body> <script> $(function(){ //给body强制定义高度 var windowHeig ...
- vue中使用触摸事件,上滑,下滑,等
第一步,下载一个包 npm install kim-vue-touch -s 在当前项目中下载包 第二部 import vueTouch from 'kim-vue-touch' Vue.use(vu ...
- js监听事件 上滑消失下滑出现的效果 触摸与手势事件
https://www.w3cmm.com/javascript/touch.html //触摸与手势事件连接tinyscrollbar //方法1var _this = $('#fabu');var ...
- vue js判断长按触发及手指的上滑、下滑、左滑、又滑
<span class="btn" @touchstart="touchstart()" @touchmove="touchmove()&quo ...
- NestedScrollView嵌套RecycleView 滑动 实现上滑隐藏 下滑显示头部效果
废了好大的劲才弄好的,记下来 方便以后查看 public class MainActivity extends AppCompatActivity { private RecyclerView mRe ...
- RecyclerView 滑动检测 (上滑 up)(下滑 down)(顶部 top)(底部 bottom)
RecyclerView 给我们的可以检测滑动事件的接口 只有 一个方法 recyclerview.setOnScrollListener()或者 recyclerview.addOnScroll ...
- iOS 上滑隐藏导航,下滑显示导航,仿斗鱼导航效果
UItableView或 UIcollectionView 都是继承UIScrollView 滑动的时候,判断是上滑还是下滑 使用 UIScrollView 的代理方法 func scrollView ...
- Android的ListView分页功能(上滑加载更多)
今天主要工作是将之前实现的各种ListView显示全部信息,优化成了每次加载几条数据,然后上滑的时候加载更多,底部显示一个进度条和一个文字提示,然后加载完毕后,将提示信息隐藏. 一边看教学视频一遍敲代 ...
随机推荐
- WordPress 性能检测与速度优化
来源:SayBlog.Me [摘要]在如何提升WordPress性能与速度方面多花一些时间是值得的,本文下面为大家就如何提升WordPress运行效率列出了几点建议以供参考. 你的WordPress博 ...
- Oracle SQLserver数据库创建表ID字段的自动递增_序列
Oracle 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create table t_user( Id ),userid ),loginpasswo ...
- UIImagePickerController
1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType; 检查指定源是 ...
- C#线程系列讲座(1):BeginInvoke和EndInvoke方法
一.C#线程概述 在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行.这就需要在同一个进程中开启多个 ...
- 浅谈EasyUI---C#三层架构---
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...
- .NET C#: NameValueCollection
NameValueCollection class is in System.Collection.Specialized assembly. Unlike with HashTable, NameV ...
- javascript 判断浏览器的ie版本,替换html标签
/* var browser=navigator.appName var b_version=navigator.appVersion var version=b_version.split(&quo ...
- maven笔记-入门(helloWorld)
maven: pom.xml:文件 groupId,artifactId,Version定义了一个项目的基本坐标 groupId:定义了项目属于哪个组,往往与项目所在的组织和公司有关 artifact ...
- 通过struts.xml搭建、为属性注入值_2015.01.04
01:web.xml配置: <?xml version="1.0" encoding="UTF-8"?> <web-app version=& ...
- 夺命雷公狗ThinkPHP项目之----企业网站28之网站前台左侧导航的实现
我们基于刚才在model层的找顶级分类的代码在进行修改即可: <?php namespace Home\Controller; use Think\Controller; class Commo ...