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----------------

  • 相关阅读:
    欧几里得算法
    匈牙利算法找二分图最大匹配
    hdu3374 String Problem(最小值表示法 + KMP)
    hdu6704 K-th occurrence(后缀数组+RMQ+主席树)
    洛谷 P3809 【模板】后缀排序
    hdu2222 【AC自动机】Keywords Search
    2019杭电多校十 1011 Make Rounddog Happy(rmq + 分治)
    Separate String(Ac自动机+dp)
    2019杭电多校二 I Love Palindrome String(回文自动机)
    HDU2451 Simple Addition expression(数位dp/找规律)
  • 原文地址:https://www.cnblogs.com/halzhang/p/1802611.html
Copyright © 2011-2022 走看看