文档章节

Android"解决"onTouch和onClick的冲突问题

铂金小狼
 铂金小狼
发布于 2014/01/26 14:12
字数 314
阅读 4481
收藏 11

    开门见山,做了一个按钮,如图

    

    好不容易把效果实现了,但是后面发现了一个问题,因为这个按钮是可以滑动或者点击的,滑动倒是无所谓,down——move——up 就可以了,但是点击的时候不但会执行点击操作,也会执行down和up的动作,就冲突了,开始还自己乱搞一气,想试图谋杀onTouch,但是onClick不答应,死死拦住我说,说要想杀onTouch,必须从它尸体上踏过去。

    然后搜了搜,觉得有个不是办法的办法还是不错的,就是判断down的时候以及up的时候两者的x的变化,如果没有变化,就暂定为一次onclick点击事件

    

public boolean onTouchEvent(MotionEvent event) {
		final int action = event.getAction();
		final int moveX = (int)event.getX();
		final int scape = moveX - firstX;
		switch (action) {
		case MotionEvent.ACTION_DOWN:
			firstX = (int) event.getX();//按下的时候开始的x的位置
			break;
		case MotionEvent.ACTION_MOVE:
			if (isMove) {
				move(scape);
			}
			break;
		case MotionEvent.ACTION_CANCEL:
			
		case MotionEvent.ACTION_UP:
			secondX = (int)event.getX();//up的时候x的位置
			int distance = secondX - firstX;
			if (distance == 0) {
				//当没有变化的时候什么都不做
			}else {
				//执行move滑动后的操作
			}
			break;
		}
		return true;
	}

    效果还不错

© 著作权归作者所有

铂金小狼
粉丝 54
博文 238
码字总数 23466
作品 0
程序员
私信 提问
加载中

评论(5)

铂金小狼
铂金小狼 博主

引用来自“唐小鹏同学”的评论

解决了我的问题
太客气了
唐小鹏同学
唐小鹏同学
解决了我的问题
唐小鹏同学
唐小鹏同学
谢谢了,
铂金小狼
铂金小狼 博主
这个地方貌似不需要return,只要它up的时候判断如果距离没有变化,那么久不执行
四档路飞
四档路飞
是在distance==0的时候return false吗,我试了还是不能响应onclick事件,除非把setontouchlistener的返回值改为false,动态改变它的返回值没有用
Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

版权声明:本文出自郭霖的博客,转载必须注明出处。 https://blog.csdn.net/sinyu890807/article/details/9097463 转载请注明出处:http://blog.csdn.net/guolinblog/article/details/90974...

guolin
2013/06/20
0
0
Android onTouchEvent, onClick及onLongClick的调用机制

针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件? 在Android中,一次用户操作可以被不同的View按次序分别处理,并将完全响应了用户一...

无鸯
2011/09/08
419
0
android 触摸事件、点击事件的区别

针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件? 在Android中,一次用户操作可以被不同的View按次序分别处理,并将完全响应了用户一...

eric_zhang
2011/08/08
0
11
Android事件分发机制完全解析,带你从源码的角度彻底理解(上) .

转自: http://blog.csdn.net/guolin_blog/article/details/9097463 其实我一直准备写一篇关于Android事件分发机制的文章,从我的第一篇博客开始,就零零散散在好多地方使用到了Android事件分...

带梦想一7飞
2014/07/03
0
0
08.Android之View事件问题

目录介绍 8.0.0.1 简述Android的事件分发机制?dispatchTouchEvent方法的作用是什么?说下View和ViewGroup分发事件? 8.0.0.2 onInterceptTouchEvent方法作用是什么?onTouchEvent的方法的作...

潇湘剑雨
02/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决问题&发现问题

作为一个程序员非常重要的的能力就是解决问题的能力,当然除了解决问题之外,还有一个经常被疏忽的能力-发现问题的能力。 解决问题 一套有效的解决问题的能力非常重要,下面是一个解决问题的...

Lubby
21分钟前
5
0
Leetcode PHP题解--D104 167. Two Sum II - Input array is sorted

D104 167. Two Sum II - Input array is sorted 题目链接 167. Two Sum II - Input array is sorted 题目分析 给定一个已经排序好的整数数组,从中寻找两个数字,使其相加之后等于给定的一个...

skys215
28分钟前
3
0
IntelliJ IDEA Spring Boot 2.x 多模块项目创建

在学习Spring Boot 2的时候顺便来学习创建下Maven下的多模块项目创建。方便学习使用整套开发流程。 第一步,检查IDEA,新版本的IDEA可能没有Spring Assistant可通过插件安装(Preferences->P...

被猪拱了的JAVA
28分钟前
5
0
Java运行状态分析2:获取线程堆栈信息

Java运行状态分析2:获取线程堆栈信息 基本概念 出现内存泄漏或者运行缓慢场景,有时候无法直接从业务日志看出问题时候,需要分析jvm内存和线程堆栈 线程堆栈信息主要记录jvm线程在某时刻线程...

indi_yugj
29分钟前
8
0
解决java编译错误:编码GBK的不可映射字符

https://www.cnblogs.com/charleswong/p/8481593.html 新建java文件,存储时Encoding选择了UTF-8, 由于语句中包含中文,javac编译时报错,提示"编码GBK的不可映射字符": 解决办法: 方法一...

时刻在奔跑
35分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部