zoukankan      html  css  js  c++  java
  • Android开发——浅谈onInterceptTouchEvent、onTouchEvent与onTouch

    一、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:  ……
      10: }

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

    三、onInterceptTouchEvent

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

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

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

    以上纯属个人见解,如有不同看法欢迎交流。

    -----------------EOF----------------

  • 相关阅读:
    JAVA使用Marvin在图片中搜索图片
    Apache 4.x HttpClient
    关于Java 项目的思考总结
    追查Could not get a databaseId from dataSource
    web项目中从不同的路径读取文件
    JDBC通用方法实现
    CentOS6.4下Mysql数据库的安装与配置
    使用 Spring 容器管理 Filter
    CentOS安装JAVA
    为github帐号添加SSH keys
  • 原文地址:https://www.cnblogs.com/halzhang/p/1802611.html
Copyright © 2011-2022 走看看