最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件。自测各方面都挺好的,美滋滋的给了研发。...研发也美滋滋的开始开发。 但是,好景不长。。。 研发加了ajax事件后,我的交互效果有部分受了影响! 一个小姑娘,在一群大老爷们研发堆里,对着昏暗的电脑和看不太懂的后台代码,改了半天。最后没解决。...所以一开始事件找不到“接头人”就没有执行。 扫噶,定位到问题,就好解决了。 之所以整理成随笔,是因为我之前没遇到过这个问题,听过事件委托机制,但是根本没研究过不知道适用于什么样的bug场景。...正规点的说:JS异步加载,JQ事件不被执行解决方法(百度的标题,hah) jquery中动态新增的元素节点无法触发事件问题(同上) 解决方法: ? ?...值得注意的是:亲测此方法无效,可能是我用的jq的版本太高了,1.9多,已经不支持这个方法了 第二个方法: ? 但是缺点是:给一个元素添加多个事件委托机制时,他就挂了。 王者方法:on ?
地址 http://blog.csdn.net/xiangyong_1521/article/details/78489254 目录 常见按钮点击 点击的其他方式 对话框按钮点击 列表点击 物理键点击...,较少使用,一般长按要么弹出提示对话框,要么弹出上下文菜单(上下文菜单只需注册就好,无需额外处理长按事件)。...相关类名与方法说明如下: 监听器类名 : OnTouchListener 设置监听器的方法 : setOnTouchListener 监听器需要重写的点击方法 : onTouch findViewById...对话框按钮点击 对话框的点击事件其实就是按钮点击,只是对话框上有多个按钮,所以需要分别注册监听器,分别响应点击事件。...} public void onTabReselected(Tab tab, FragmentTransaction ft) { } } 4.3 菜单项点击菜单的点击事件适用于选项菜单和上下文菜单的单项点击
即回调控件注册Touch事件时的onTouch(); * 2....事件监听 且 在onTouch()返回false 注册Touch事件监听 且 在onTouch()返回true 分析1:注册Touch事件监听 且 在onTouch()返回false 代码示例 // 1...(), 动作是:0 执行了onTouch(), 动作是:1 执行了onClick() 测试结果说明 点击按钮会产生两个类型的事件-按下View与抬起View,所以会回调两次onTouch(); 因为onTouch...(), 动作是:0 执行了onTouch(), 动作是:1 测试结果说明 点击按钮会产生两个类型的事件-按下View与抬起View,所以会回调两次onTouch(); 因为onTouch()返回了true...这里需要特别注意的是:Activity、View都无该方法,仅ViewGroup特有。
即回调控件注册Touch事件时的onTouch(); * 2\....] 在本示例中,将分析两种情况: 注册Touch事件监听 且 在onTouch()返回false 注册Touch事件监听 且 在onTouch()返回true 分析1:注册Touch事件监听 且 在onTouch...(), 动作是:0 执行了onTouch(), 动作是:1 执行了onClick() 测试结果说明 点击按钮会产生两个类型的事件-按下View与抬起View,所以会回调两次onTouch(); 因为onTouch...(), 动作是:0 执行了onTouch(), 动作是:1 测试结果说明 点击按钮会产生两个类型的事件-按下View与抬起View,所以会回调两次onTouch(); 因为onTouch()返回了true...[image.png] 这里需要特别注意的是:Activity、View都无该方法,仅ViewGroup特有。
我们在主按钮的点击事件中调用显示函数 ?...buttonconnect1.setOnTouchListener(buttonconnect1Touch);//按钮的触摸事件 /**对话框相关**/...buttonconnect1.setOnTouchListener(buttonconnect1Touch);//按钮的触摸事件 /**对话框相关**/...然后会发现 对话框消失了 ? 因为咱们自己设置的消失 ? 现在让它连接后打开控制界面 ?...buttonconnect1.setOnTouchListener(buttonconnect1Touch);//按钮的触摸事件 /**对话框相关**/
2、长按事件,较少使用,一般长按要么弹出提示对话框,要么弹出上下文菜单(上下文菜单只需注册就好,无需额外处理长按事件)。...相关类名与方法说明如下: 监听器类名 : OnTouchListener 设置监听器的方法 : setOnTouchListener 监听器需要重写的点击方法 : onTouch 2、键盘事件...对话框按钮点击 对话框的点击事件其实就是按钮点击,只是对话框上有多个按钮,所以需要分别注册监听器,分别响应点击事件。...对话框按钮点击事件的具体实现代码可参考《Android开发笔记(二十三)文件对话框FileDialog》。...菜单项点击 菜单的点击事件适用于选项菜单和上下文菜单的单项点击,菜单无需注册监听器即可响应点击事件,相关的点击处理方法说明如下: onMenuItemSelected : 在菜单项选择时调用,其内部做分支判断
在Android系统中,手势的识别是通过 .OnGestureListener接口来实现的,利用,摸屏的Fling、Scroll等方法可以进行滑动或翻页效果的实现;触摸屏相关的事件,是通过onTouchListener...这里我们需要GestureDetector.OnGestureListener接口的帮助,实现如下例子: @Override public boolean onTouch(View v, MotionEvent...(View v, MotionEvent event) { // 根据触摸的事件来得到手势的事件 return mGestureDetector.onTouchEvent...(event); //返回一个手势的事件 } 最后根据手势的事件实现Gesture的相应抽象方法,最重要的是onScroll(),onFiling(),onLongPress()这几个方法...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
就算你不自定义控件,你也必须要了解Android控件的触摸屏事件传递机制(之所以说触摸屏是因为该系列以触摸屏的事件机制分析为主,对于类似TV设备等的物理事件机制的分析雷同但有区别。...现在来分析下上面的打印结果;在1中,当我们点击Button时会先触发onTouch事件(之所以打印action为0,1各一次是因为按下抬起两个触摸动作被触发)然后才触发onClick事件;在2中也同理类似...2-3 总结结论 好了,经过这个简单的实例验证你可以总结发现: Android控件的Listener事件触发顺序是先触发onTouch,其次onClick。...如果控件的onTouch返回true将会阻止事件继续传递,返回false事件会继续传递。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
()); return false; } }); onTouch方法里能做的事情比onClick要多一些,比如判断手指按下、抬起、移动等事件。...因此事件传递的顺序是先经过onTouch,再传递到onClick。...你可以先理解成onTouch方法返回true就认为这个事件被onTouch消费掉了,因而不会再继续向下传递。...第三个条件就比较关键了,mOnTouchListener.onTouch(this, event),其实也就是去回调控件注册touch事件时的onTouch方法。...因此如果你有一个控件是非enable的,那么给它注册onTouch事件将永远得不到执行。
屏幕的滑动事件?...对于view的触摸事件有三个动作: ACTION_DOWN:按下 ACTION_MOVE:移动 ACTION_UP:弹起 对于一个view,有touch事件,drag事件,click事件,所涉及到的listener...默认的是返回的false 在此声明:当屏幕进行触摸时首先是activity感受到该触摸事件,然后对事件进行分发处理,也就是说要不要传给activity中的view进行处理。...activity首先将事件分发到你所定义的最外层的view,在本程序中我只定义了一个view,所以当dispatchTouchEvent返回false进行事件分发时就理所当然的分发给了我所定义的view...可以看出,当activity触摸时 首先进行dispatchTounchEvent进行事件的分发,分发到view后出发onTouchListener的onTouch方法,会有三个动作,如果是长按,则在ACTION_MOVE
如果dispatch***在执行onTouch监听的时候,onTouch返回了true,那么它也返回true,这个事件提前被onTouch消费掉了。...3、我们通常在onTouch监听了设置图片一旦被触摸就改变它的背景、透明度之类的,这个onTouch表示事件的时机。而在onClick监听了去具体干某些事。...事件先由Activity的dispatchTouchEvent进行分发,然后TestButton的dispatchTouchEvent进行分发,接着执行onTouch监听,然后执行onTouchEvent...因为事件给了孩子们,它没监听也关系不到父亲了,父亲的onClick和onTouch都没执行。...果然事件就此打住,孩子们压根不知道,父亲执行了onClick和onTouch监听。可见父亲还是伟大的啊,只要谋士不拦截事件,那么事件就给孩子。
,只有前一个action返回为true时,后一个action才会触发 View事件分发面试问题 事件分发中的 onTouch 和 onTouchEvent 有什么区别,该如何使用 这两个方法都是在 View...的 dispatchTouchEvent 中调用的,onTouch 优先于 onTouchEvent 执行。...onTouch 执行需要满足两个条件: mOnTouchListener 的值不能为空 当前点击的控件必须是 enable 的。...因此如果你有一个控件是非 enable 的,那么给它注册 onTouch 事件将永远得不到 执行。...区别 onTouch事件要先于onClick事件执行,onTouch在事件分发方法dispatchTouchEvent中调用,而onClick在事件处理方法onTouchEvent中被调用,onTouchEvent
问题原型: 父控件是自定义的 LinearLayout,目的是实现下拉刷新,这个自定义View的实现下拉操作思想是通过检测 onTouch 事件,然后,子控件有一个 scrollView,它是完全为了实现下滚和滚到底部实现加载更多的监听...在 scrollView 里面的第一层View里面有很多一样的自定义的 View,每个有具备自身的 onClick 和 onTouch 事件,目的是为了在用户点击的时候实现变色和相应。 ...问题来了,根据他说的,每次点击,总是先实现 自定义View的 onTouch 的down,然后是 onClick,而 父 Linearlayout的 onTouch是最后实现,而且,父的 action_down...我们知道,在同一个 View中,注意,是同一个 View,没嵌套的情况下,用户手势事件执行顺序是: onTouch->onLongClick->onClick。...最能接近的是父View的onTouch里面使用 requestDisallowInterceptTouchEvent 来允许这个手势事件能传给 子View,但是,他的这个问题是,儿子不爽父亲先的。
到目前为止,ACTION_DOWN的事件经过了从Activity到CustomButton的分发,然后经过onTouch和onTouchEvent的处理,最终,ACTION_DOWN事件交给了CustomButton...的onTouch()方法处理。...onTouch事件要先于onClick事件执行,onTouch在事件分发方法dispatchTouchEvent中调用,而onClick在事件处理方法onTouchEvent中被调用,onTouchEvent...解决方案: 开始仅着眼于Touch Event处理完后的回传过程,想了N久不得,毕竟我想实现的是一个需要打破android事件处理逻辑的效果(就是一个连续性操作,只有不满足上层要求时,才轮到下层处理...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
://github.com/2954722256/demo_event ---- 这里 我们给上一篇的2个例子, 只是在MainActivity中, 分别给2个控件, 添加上OnClick 和 OnTouch...只是 先触发 OnTouch 的事件(对外的,对开发者的), 再 获取到OnTouchEvent事件(系统的,消费) , 再触发 OnClick 事件 我们可以理解成, 点击事件从最外层分发下来,...先触发 TouchListener回调接口, 系统获得处理OnTouch事件, 判断是否消费, 判断是Click事件, 再触发 ClickListener回调接口 ---- 【EventViewGroup...的事件(对外的,对开发者的), 再 获取到OnTouchEvent事件(系统的,消费) , 再触发 OnClick 事件 只是, ViewGroup没有调用最外面Activity的OnTouchEvent...方法了 ** 可以理解成,这里消费掉了点击, 就不用调用上层的 OnTouch方法了 ** ---- 简单回顾 简单看了下对应的点击后的区别 我们简单对比一下 ?
代码中 如果返回 false 就不能捕捉到ACTION_MOVE 事件。 ...对于onTouchEvent 中onTouch返回值 1 、如果return false 说明还没有消费onTouch事件,在执行onTouch里代码后,onTouch事件并没有结束。...2、如果return true 说明消费了onTouch事件 onTouch事件结束了 但在实际操作中 除了ACTION_DOWN事件以外,其余的事件只有返回true的那个方法才能捕捉到。...所以 返回false的时候只能捕捉到每次的第一个DOWN事件 后面的MOVE 和UP事件就捕捉不到了。...DisplayMetics 类: Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。
触屏事件 三类简单触屏事件: 单击事件:OnClickListener 长按事件:OnLongClickListener 触摸事件:OnTouchListener 这些方法都是View类的,所以像TextView...View view)即可 长按事件 长按事件有单击事件的前四种方法,但是没有最后一种方法。...当返回true,表示消耗掉了这次事件,也就是说不会有单击的效果。如果返回法false,则在松手的时候会触发单击事件。...触摸事件 触摸事件有onTouch方法有参数MotionEvent event,通过对象event方法getX()和getY()可以获取触摸出横纵坐标。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
记得刚开始学习Android的时候,对于onTouch相关的事件一头雾水。...分不清onTouch(),onTouchEvent()和OnClick()之间的关系和先后顺序,觉得有必要搞清onTouch事件传递的原理。...所以View这个类应该掌管着onTouch事件的相关处理。...到了这里onTouch事件的传递机制基本已经分析完成了,也算是告一段落了。...,ACTION_UP事件,也就是说只有事件被消费了才能接收接下来的事件。
不过一般是在子view中来调用的。 1.4 onTouch 是触摸事件,当一个触摸事件被分发到一个view的时候。...1.6 onClick 是一个点击事件,是在onTouchEvent的up事件里面执行的,它的优先级是最低,如果在onTouchEvent或OnTouchListener的onTouch方法如果返回true...onTouch,onTouchEvent和onClick的执行顺序:onTouch—>onTouchEvent—>onClick,注意:onClick直接消费掉了事件,不会再向上回溯事件了。...的点击事件响应怎么办,按照上面的andorid事件分发流程图,方法多了,我们可以在不同的阶段进行控制,不让事件向下分发,但我们试试onTouch()这个方法,此方法默认返回false,我们现在让它返回true...测试结果是可以的,也就是说onTouch()方法返回true也是自己消费了,不会在向下传递到onTouchEvent()了,更不会传递到onClick()了,如图: ? image.png ?
领取专属 10元无门槛券
手把手带您无忧上云