杂篇二

作者: 狼性代码人 | 来源:发表于2021-03-09 17:20 被阅读0次

1、事件分发机制
2、Activity启动流程

1、事件分发机制

参考资料:
https://blog.csdn.net/ClAndEllen/article/details/79365369
https://www.jianshu.com/p/555ffeb64e68

<com.lak.app.test.java.view.JScrollView >
    <com.lak.app.test.java.view.JLinearLayout>
        <com.lak.app.test.java.view.JTextView
            android:clickable="true" />
    </com.lak.app.test.java.view.JLinearLayout>
</com.lak.app.test.java.view.JScrollView>
// activity
class TestJavaActivity : AppCompatActivity() {

    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("activity ---------- dispatchTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.dispatchTouchEvent(ev)
        HiLog.d("activity ---------- dispatchTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result
    }

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        HiLog.d("activity ---------- dispatchTouchEvent ----- ${eventActionToString(event)}")
        val result = super.onTouchEvent(event)
        HiLog.d("activity ---------- dispatchTouchEvent ----- ${eventActionToString(event)} ----- $result")
        return result
    }
}
class JScrollView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : ScrollView(context, attrs, defStyleAttr) {

    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("scrollview ---------- dispatchTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.dispatchTouchEvent(ev)
        HiLog.d("scrollview ---------- dispatchTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result
    }

    override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("scrollview ---------- onInterceptTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.onInterceptTouchEvent(ev)
        HiLog.d("scrollview ---------- onInterceptTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result
    }

    override fun onTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("scrollview ---------- onTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.onTouchEvent(ev)
        HiLog.d("scrollview ---------- onTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result
    }

}
class JLinearLayout @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {

    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("linearlayout ---------- dispatchTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.dispatchTouchEvent(ev)
        HiLog.d("linearlayout ---------- dispatchTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result
    }

    override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("linearlayout ---------- onInterceptTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.onInterceptTouchEvent(ev)
        HiLog.d("linearlayout ---------- onInterceptTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result

//        HiLog.d("linearlayout ---------- onInterceptTouchEvent ----- ${eventActionToString(ev)}")
//        val result = true
//        HiLog.d("linearlayout ---------- onInterceptTouchEvent ----- ${eventActionToString(ev)} ----- $result")
//        return result

    }

    override fun onTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("linearlayout ---------- onTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.onTouchEvent(ev)
        HiLog.d("linearlayout ---------- onTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result
    }

}
class JTextView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : AppCompatTextView(context, attrs, defStyleAttr) {

    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("textview ---------- dispatchTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.dispatchTouchEvent(ev)
        HiLog.d("textview ---------- dispatchTouchEvent ----- ${eventActionToString(ev)} ----- $result")
        return result
    }

    override fun onTouchEvent(ev: MotionEvent?): Boolean {
        HiLog.d("textview ---------- onTouchEvent ----- ${eventActionToString(ev)}")
        val result = super.onTouchEvent(ev)
        HiLog.d("textview ---------- onTouchEvent ----- ${eventActionToString(ev)} ----- $result")

//        HiLog.d("textview ---------- onTouchEvent ----- ${eventActionToString(ev)}")
//        val result = false
//        HiLog.d("textview ---------- onTouchEvent ----- ${eventActionToString(ev)} ----- $result")

        return result
    }

}
// 运行结果: 以 down 事件为例
activity ---------- dispatchTouchEvent ----- down
scrollview ---------- dispatchTouchEvent ----- down
scrollview ---------- onInterceptTouchEvent ----- down
scrollview ---------- onInterceptTouchEvent ----- down ----- false
linearlayout ---------- dispatchTouchEvent ----- down
linearlayout ---------- onInterceptTouchEvent ----- down
linearlayout ---------- onInterceptTouchEvent ----- down ----- false
textview ---------- dispatchTouchEvent ----- down
textview ---------- onTouchEvent ----- down
textview ---------- onTouchEvent ----- down ----- true
textview ---------- dispatchTouchEvent ----- down ----- true
linearlayout ---------- dispatchTouchEvent ----- down ----- true
scrollview ---------- dispatchTouchEvent ----- down ----- true
activity ---------- dispatchTouchEvent ----- down ----- true
事件分发流程

2、Activity启动流程

深入理解Activity启动流程和AMS框架(一)
深入理解Activity启动流程和AMS框架(二)
深入理解Activity启动流程和AMS框架 - 完整

相关文章

  • 杂篇(二)

    终其是凡人,尘世中的各种爱慕情仇,市井喧嚣,花红酒绿,纷纷攘攘。充斥着接踵而来的平凡的每一天。 大抵时间应该是没有...

  • 杂篇二

    杂篇一[https://www.jianshu.com/p/9bd0f250b06e]杂篇二[https://ww...

  • 杂篇一

    杂篇一[https://www.jianshu.com/p/9bd0f250b06e]杂篇二[https://ww...

  • 《杂篇·二首》

    一 半眉轻皱, 红粉香瘦。 几时佳人, 静成难得时候。 深深夜,幽幽阙 无边话意, 却道尽非人言语。 二 日复日,...

  • 《杂篇二首》

    杂思乱,空自引愁扰。 佳人尽日不语,君心漪涟难寂。 最难耐, 那落许无人空落处。 只得青灯孤伴, 与月同殇。 长夜...

  • 盛世、政治和其他 | 读《庄子·让王》

    《让王》在《庄子》杂篇中不算优秀的。杂篇的地位大抵相当于网络小说,庄门里写着娱乐用的。当然了,踌躇满志的中二青年一...

  • 庄子浅见梦谈

    《庄子》 杂篇 第二十四篇【徐无鬼】片段 二王斗法 这一小段文章我给取了个名字,叫【二王...

  • 周二杂记

    运华日记第271篇(2018.8.8.周二) 周 二 杂 记 每个周二都是忙碌的。 上午在茅协接访让...

  • 庄子论墨子

    庄子评价墨子最著名的是《天下》篇。 现存《庄子》,《内篇》七,《外篇》十五,《杂篇》十一,《天下》居于《杂篇》最末...

  • 杂 篇

    自从被生下来,人就会有一个叫“人体节律”的东西,智力,体力,情绪。随时处于波动的状态,必定不会出现三条线都在同一顶...

网友评论

      本文标题:杂篇二

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