RecyclerView onTouch & onClick 触摸事件与点击事件
遇到一种情况需要处理,RecyclerView所在Activity需要处理滑动事件用于返回(onBackPressed)。
手势检测:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
LogUtil.d(this,"fling");
if (e1.getX() - e2.getX() > verticalMinDistance
&& Math.abs(velocityX) > minVelocity) {
LogUtil.d(this, "fling left");
return true;
} else if (e2.getX() - e1.getX() > verticalMinDistance
&& Math.abs(velocityX) > minVelocity) {
LogUtil.d(this, "fling right");
activity.onBackPressed();
return true;
}
return false;
} @Override
public boolean onDown(MotionEvent e) {
LogUtil.d(this, "Down");
return false;
} @Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
LogUtil.d(this, "scroll");
return false;
}
此处需要注意,onDown不能直接处理成true(开始就坑在这里,完全按普通触摸事件处理成返回true,导致click事件永远不会得到事件触发)。
虽然官方文档建议处理触摸事件时,要将其置成true,表示开始处理触摸。但因为我们还有itemView的click事件要处理,所以onDown不能直接返回true.
绑定触摸事件:
view.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
LogUtil.d("Base RecyclerView Event", "Touch");
mDetector.onTouchEvent(e);
return false;
} @Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) { } @Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { }
});
RecyclerView onTouch & onClick 触摸事件与点击事件的更多相关文章
- JS怎样将拖拉事件与点击事件分离?
帖子:http://bbs.csdn.net/topics/390785395?page=1#post-397369340 怎样将拖拉事件跟点击事件分离? 须要做到:拖拉时不触动点击事件 <ht ...
- (网页)HTML5 Canvas ( 事件交互, 点击事件为例 ) isPointInPath(转)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- HTML5 Canvas ( 事件交互, 点击事件为例 ) isPointInPath
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- [前端][自定义DOM事件]不使用setTimeout实现双击事件或n击事件
使用setTimeout实现双击事件 例如,这样: let div = document.getElementById("div"); doubleClick(div, funct ...
- android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
前三篇文章 android v7兼容包RecyclerView的使用(三)--布局管理器的使用 android v7兼容包RecyclerView的使用(二) android v7兼容包Recycle ...
- Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener冲突问题
今天在做demo时,须要设置ListView的item的长按和点击事件.OnItemLongClickListener和OnItemClickListener,然而点击事件能够实现,可是在长按操作时会 ...
- Android长按事件和点击事件 冲突问题
长按点击的时候默认会触发点击事件,android系统是优先点击的,并且没有返回值:而长按事件是有返回值的,如果返回false,两个事件都会有响应,如果返回true则只响应长按事件.
- threejs Object的点击(鼠标)事件(获取点击事件的object)
objects=[]; raycaster = new THREE.Raycaster(); mouse = new THREE.Vector2(); //监听全局点击事件,通过ray检测选中哪一个o ...
- input中blur失去焦点事件与点击事件冲突时如何解决
方法一 使用setTimeout $(function(){ $(".cy-name-input input").on({ focus:function() { $(". ...
随机推荐
- wpf为ListBox添加渐变
<Style.Triggers> <Trigger Property="ListBox.AlternationIndex" Value="1" ...
- 【Time系列一】datetime的妙用
今天在弄个自动关机小脚本的时候,遇到了时间转换的问题,也难怪,以前没学过, 不能怪我不会哦! 首先,先学会打印出当前时间的几种方式 参考开源社区: http://my.oschina.net/u/1 ...
- lucene 自定义评分
摘自:http://blog.csdn.net/seven_zhao/article/details/42708953 1.基于FunctionQuery,(1)创建类并继承ValueSource:( ...
- Spring Boot 系列教程19-后台验证-Hibernate Validation
后台验证 开发项目过程中,后台在很多地方需要进行校验操作,比如:前台表单提交,调用系统接口,数据传输等.而现在多数项目都采用MVC分层式设计,每层都需要进行相应地校验. 针对这个问题, JCP 出台一 ...
- 在cmd中设置字体
1.首先在cmd中输入chcp 65001 回车(通过 chcp命令改变代码页,UTF-8的代码页为65001) 2.右击命令提示符的标题栏点击属性. 3.在属性中选择字体后点击确认即可.
- android 调用.NET WebServices
下载Ksoap2.jar, import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.*;import org.ksoap2.tra ...
- python之~利用PIL模块在图片上写写画画
借鉴了教程: http://yxnt.github.io/2016/05/15/Pillow-Python3.5/ 完成作业如下: 后来学着写给自己的图片加了水印. from PIL import I ...
- Memory and Scores
Memory and Scores 题目链接:http://codeforces.com/contest/712/problem/D dp 因为每轮Memory和Lexa能取的都在[-k,k],也就是 ...
- Spring Security(13)——session管理
1.1 检测session超时 1.2 concurrency-control 1.3 session 固定攻击保护 Spring Security通过http元素下的子元素s ...
- VC学习笔记: 1. Window程序内部运行机制
0. 内容结构 API与SDK 窗口与句柄 消息与消息队列 WinMain函数 1. API与SDK 这里 API是指由Windows操作系统提供给应用程序的编程接口: Windows系统提供的API ...