浅谈onInterceptTouchEvent、onTouchEvent与onTouch

移动开发 Android
本文为Android开发详解onInterceptTouchEvent函数实现分派各项功能的调用以实现各项任务。

一、onTouch

onTouch是View中OnTouchListener接口中的方法,处理View及其子类被touch是的事件处理。当然,前提是touch时间能够传递到指定的view。Q1:为什么会传递不到呢?

  1.   /**     
  2.     * Interface definition for a callback to be invoked when a touch event is    
  3.      * dispatched to this view. The callback will be invoked before the touch     
  4.       * event is given to the view.     
  5.       */     
  6.      public interface OnTouchListener {     
  7.          /**     
  8.          * Called when a touch event is dispatched to a view. This allows listeners to    
  9.          * get a chance to respond before the target view.    
  10.          *    
  11.          * @param v The view the touch event has been dispatched to.    
  12.          * @param event The MotionEvent object containing full information about    
  13.          *        the event.    
  14.           * @return True if the listener has consumed the event, false otherwise.    
  15.          */    
  16.          boolean onTouch(View v, MotionEvent event);    
  17.     }  

二、onTouchEvent

onTouchEvent同样也是在view中定义的一个方法。处理传递到view 的手势事件。手势事件类型包括ACTION_DOWN,ACTION_MOVE,ACTION_UP,ACTION_CANCEL四种事件。

  1. /**     
  2. * Implement this method to handle touch screen motion events.     
  3.  *     
  4.  * @param event The motion event.     
  5.  * @return True if the event was handled, false otherwise.     
  6.  */     
  7. public boolean onTouchEvent(MotionEvent event) {     
  8.  ……     
  9.  ……    

一旦onTouchEvent方法被调用,并返回true则这个手势事件就结束了,并不会向下传递到子控件。Q2:onTouchEvent什么时候被调用呢?

三、onInterceptTouchEvent

onInterceptTouchEvent是在ViewGroup里面定义的。Android中的layout布局类一般都是继承此类的。onInterceptTouchEvent是用于拦截手势事件的,每个手势事件都会先调用onInterceptTouchEvent。

  1.  
  2. public boolean onInterceptTouchEvent(MotionEvent ev) {     
  3.         return false;     
  4.  } 

此方法返回false,则手势事件会向子控件传递;返回true,则调用onTouchEvent方法。

 原文链接:http://www.cnblogs.com/halzhang/archive/2010/08/18/1802611.html

【编辑推荐】

  1. 在Ubuntu下建立Eclipse的Android开发环境
  2. Intent,Android应用核心探秘
  3. Adobe AIR即将登陆Android平台
责任编辑:张攀 来源: cnblogs
相关推荐

2012-12-21 09:48:06

JavaJavaSE异常

2012-12-21 10:15:35

2009-07-14 13:49:29

原型

2012-02-14 09:43:08

2013-01-08 15:11:19

OpenStackKVM

2013-11-12 14:11:10

2009-07-10 13:09:53

.Net与Java S

2009-09-21 17:30:25

组件复用服务复用

2018-02-23 14:44:41

负载均衡技术分类

2009-03-11 15:30:05

evalwithJavascript

2011-04-18 00:00:00

SQLPLSQL

2021-07-14 13:12:51

2009-06-26 16:09:53

2011-02-16 09:48:04

Hashtable

2010-09-13 14:34:55

2011-09-06 09:27:15

项目设计

2009-06-24 17:05:10

2009-07-09 15:40:54

Java ServleCGI程序

2009-07-08 09:32:25

Java设计模式

2012-11-30 14:54:48

点赞
收藏

51CTO技术栈公众号