美文网首页
Android事件传递

Android事件传递

作者: Merlin_720 | 来源:发表于2019-05-06 16:36 被阅读0次

        说到事件传递大家既熟悉又陌生,因为随着智能手机的普及,现在每天我们都在做着这样的事情,点击一个登录button跳转到登录成功界面,点击支付button。。。。

        说到陌生呢因为内部到底发生了什么事情呢,可能有些同学并不清楚。接下来我们简单说一下具体的流程,然后给大家举一个栗子。

            点击一下屏幕,事件会从activity传递到顶层的ViewGroup,然后ViewGroup再传递给他子View,

            简单的布局,一个activity 里边有个LinearLayout  LinearLayout里有个textview,然后点击textview一下,事件的传递

    1.png

    这是简单的第一个点击,没有移动的情况,打印结果如下:

    FreshActivity--------------------dispatchTouchEvent----MotionEvent { action=ACTION_DOWN

    TouchViewLinearLayout---------dispatchTouchEvent----MotionEvent { action=ACTION_DOWN

    TouchViewLinearLayout---------onInterceptTouchEvent----MotionEvent { action=ACTION_DOWN

    TouchTextView------------------dispatchTouchEvent----MotionEvent { action=ACTION_DOWN

    TouchTextView------------------onTouchEvent----MotionEvent { action=ACTION_DOWN

    TouchViewLinearLayout---------onTouchEvent----MotionEvent { action=ACTION_DOWN

    FreshActivity--------------------onTouchEvent----MotionEvent { action=ACTION_DOWN

    FreshActivity--------------------dispatchTouchEvent----MotionEvent { action=ACTION_UP

    FreshActivity--------------------onTouchEvent----MotionEvent { action=ACTION_UP

    通过打印可以发现,事件由activity 传递到ViewGroup 然后再由ViewGroup传递到view最后传回到view。这是在各层都没有拦截的情况下(默认情况)。这是actionDown,然后actionUp的时候因为是知道是默认情况,所以直接交给activity处理(如果不是默认情况,也是交给处理的view处理。)着就是一个u型的事件传递流程。

    相关文章

      网友评论

          本文标题:Android事件传递

          本文链接:https://www.haomeiwen.com/subject/unyplxtx.html