android onclick与ontouch和scroll监听冲突的解决方法 类似QQHD拖动窗口效果
来源:互联网 发布:儿童绘图软件免费下载 编辑:程序博客网 时间:2024/06/10 01:39
控件监听有onTouch、onClick,同时控件可以存在ScrollView里面多出了一个滚动监听。
Click事件与scroll事件不存在冲突,故在click事件中不需要考虑scroll变化
Click事件与touch存在冲突,touch事件会将当ontouch事件的return返回的是true时,click点击事件将被拦截无法实现事件响应。
Touch事件与srcoll事件存在冲突,scroll与touch之间相互干扰可能会互相屏蔽事件导致响应事件不灵敏。
要解决三个事件两两之间不冲突可以将冲突判定拆分开来分步解决。
首先解决click事件与touch事件冲突,当控件添加了click监听后,如果在当前控件外面还添加了touch监听事件,则touch事件将不在响应,必须在给该控件添加一次touch事件监听。添加上touch事件后出现了touch事件与click事件冲突。在这里就需要用到一个boolean变量用于做为ontouch事件监听的返回对象。该变量在每次产生ontouch事件的action_down时赋值为false.在action_move里面判定当产生滑动时将该boolean变量赋值为true,则该touch事件返回为true,touch事件将继续生效,而click事件并不产生响应,若当前仅点击,则无法触发将boolean值改变为true,那么ontouch事件将只执行一次,click事件将被响应。
如此将可以解决ontouch事件与onclick冲突,做到可以响应click事件与响应touch事件,下面要处理touch事件与scroll事件冲突。
首先,将ScrollView控件重写,在其代码里添加一个boolean变量,生成set方法。修改onInterceptTouchEvent方法,将其改成若新生成的boolean变量为true时返回super. onInterceptTouchEvent(ev);其它的返回false。此处功能为屏蔽scrollview的滚动功能。然后将该scrollview里面的控件也添加ontouch监听,在该监听的action_down时初始化boolean变量,同时获取当前相当于屏幕的X坐标点存起来。在action_move时获取当前X坐标,计算与初始的坐标是否存在位移,可以自己设定当相对X轴移动多大距离时触发屏蔽scrollview功能,至于如何屏蔽scrollview的滚动功能呢,只要调用重写里面新添加的那个set方法将该boolean值设置为false则可以屏蔽scrollview的滚动功能,如此控件就可以触发ontouch的完整事件,若没触发该方法时,scrollview将执行滚动效果。
属于个人原创,不想写文章被逼着写来着的,要怎么上传附件?有个小例子
http://download.csdn.net/detail/kelouy/4921488
附件下载地址
- android onclick与ontouch和scroll监听冲突的解决方法 类似QQHD拖动窗口效果
- android onTouch与onClick冲突解决方法
- Android 中 onTouch 和OnClick 冲突的处理(onTouchEvent返回true时与onclick冲突)
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- Android 中 onTouch 和OnClick 冲突的处理
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- Android 中 onTouch 和OnClick 冲突的处理
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- Android关于OnTouch 和OnClick同时调用冲突的解决方案
- android ontouch和onclick冲突处理
- 悬浮窗onTouch和onCLick的冲突
- Android关于OnTouch 和OnClick同时调用冲突 重复
- android onClick 与 onTouch 的区别
- Android onTouch 与 onClick 的关系
- 关于Android中onTouch时间与onClick事件的监听问题
- Android中onTouch与onClick两种监听的完全解析
- ContentProvider和Uri详解 !
- ZendStudio配置SFTP;结合Zend Debugger进行php代码的远程调试
- IOS用UINavigationController实现在两个页之间导航
- 打开一个现有的php 网站
- pvfs2.8.2与pvfs2.7.1的操作的状态机流程已经由很大的区别了
- android onclick与ontouch和scroll监听冲突的解决方法 类似QQHD拖动窗口效果
- ArcSDE常用命令之sdemon
- ViBe:A Universal Background Subtraction Algorithm for Video Sequences 研读报告
- 一些经典的计算机书籍
- FusionCharts学习笔记(一)
- uboot mmc read/write命令用法
- Genome Evolution LA5052
- Android区分系统应用和安装应用
- vs2012换肤功能,vs2012主题及自定义主题