判断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显示全部信息,优化成了每次加载几条数据,然后上滑的时候加载更多,底部显示一个进度条和一个文字提示,然后加载完毕后,将提示信息隐藏. 一边看教学视频一遍敲代 ...
随机推荐
- Hadoop学习(1)-- 入门介绍
Hadoop是Apache基金会开发的一个分布式系统基础架构,是时下最流行的分布式系统架构之一.用户可以在不了解分布式底层的情况下,在Hadoop上快速进行分布式应用的开发,并利用集群的计算和存储能力 ...
- 【转】分布式理论-CAP理论
一 CAP理论简述 CAP (Consistency, Availability, Partition Tolerance,) 理论是NoSQL数据库管理系统构建的基础. 强一致性:等同于所 ...
- Java数据类型和对象的引用
在Java中,变量分为两类: 1.基本类型变量,java是传递的副本 2.一切对象型变量,传引用副本的实质是复制指向地址的指针 a.基本类型引用 public class BasicTransmit ...
- linux 命令之 insmod
man insmod: INSMOD(8) insmod INSMOD(8) NAME insmod - Simple program to insert a module into the Linu ...
- HDU 1402 A * B Problem Plus(FFT)
Problem Description Calculate A * B. Input Each line will contain two integers A and B. Process to ...
- 在TextView上加上下划线或中划线
在做商城项目是需要用到原价格以及降价后的价格,不可避免用到下划线或中划线 textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下 ...
- angular 依赖注入
依赖注入 依赖注入(DI)是一个经典的设计模式, 主要是用来处理组件如何获得依赖的问题.关于DI,推荐阅读Martin Flower的文章(http://martinfowler.com/art ...
- java 如何接收数据集参数
@RequestBody String requestBody 可以接收 josn 字符串 ,list 等等 public int updateLoaneePriorityNew(HttpServ ...
- Mysql存储过程总结
1. 关于MySQL的存储过程 存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.好在MySQL 5.0终于开始已经支持存储过 ...
- 夺命雷公狗---Thinkphp----10之后台登录.注销一条龙
首先我们还是还是写一个控制器名字叫LoginController.class.php的控制器,首先来写一个code的方法来让验证码先显示出来: public function Code(){ //创建 ...