作家
登录

一篇文章彻底搞懂Android事件分发机制

作者: 来源: 2017-07-21 09:11:30 阅读 我要评论

  •  
  • getListenerInfo().mOnClickListener = l; 
  •  
  •  
  • 只有我们注册OnTouchListener时重写的

    onTouch()办法中

    返回false —> 履行onTouchEvent办法 —> 导致onClick()回调办法履行

    返回true —>>

  • public boolean dispatchTouchEvent(MotionEvent ev) {   
  •        final int action = ev.getAction();   
  •        final float xf = ev.getX();   
  •        final float yf = ev.getY();   
  •        final float scrolledXFloat = xf + mScrollX;   
  •        final float scrolledYFloat = yf + mScrollY;   
  •        final Rect frame = mTempRect;   
  •    
  •        //这个值默认是false, 然后我们可以经由过程requestDisallowInterceptTouchEvent(boolean disallowIntercept)办法   
  •        //来改变disallowIntercept的值   
  •        boolean disallowIntercept = (mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0;   
  •    
  •        //这里是ACTION_DOWN的处理逻辑   
  •        if (action == MotionEvent.ACTION_DOWN) {   
  •         //清除mMotionTarget, 每次ACTION_DOWN都很设置mMotionTarget为null   
  •            if (mMotionTarget != null) {   
  •                mMotionTarget = null;   
  •            }   
  •    
  •            //disallowIntercept默认是false, 就看ViewGroup的onInterceptTouchEvent()办法   
  •            if (disallowIntercept || !onInterceptTouchEvent(ev)) {  //第一点 
  •                ev.setAction(MotionEvent.ACTION_DOWN);   
  •                final int scrolledXInt = (int) scrolledXFloat;   
  •                final int scrolledYInt = (int) scrolledYFloat;   
  •                final View[] children = mChildren;   
  •                final 

      推荐阅读

      AgentWeb是基于Android WebView一个功能完善小型浏览器库

    【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! Android 端AgentWeb 介绍AgentWeb是一个高度封装的 Android WebView ,简单易用 , 带有进度条 、 支撑文>>>详细阅读


    本文标题:一篇文章彻底搞懂Android事件分发机制

    地址:http://www.17bianji.com/lsqh/36325.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)