invalidate()内部向上查父ViewParent,为什么最后会到ViewRootImpl?

今天看博客从源码看invalidate和requestLayout的区别 ,其中提及一点:invalidate()向上查父ViewParent,最后会查询到ViewRootImpl里面。
虽然以前view绘制流程的时候弄明白过,不过忘记了,也没有找到以前的笔记,网上搜了两下也没有看到,只有按思路理一遍,ViewRootImpl 又没有继承View,最后怎么可能会找到VireParent,理论上来说可以查到DecorView,它是View的子类。
其向上查询时使用函数 invalidateChildInParent(),其返回的是ViewParent,而不是View。
而ViewRootImpl确实也实现了ViewParent接口。但是还是要看它是怎么关联起来的?

而ViewRootImpl 与DecorView 的关系:VIewRootImpl.setView(decorView)。
那么必定是这个过程中产生了联系,果然,setView里面有以下代码

       view.assignParent(this);

就是给decorView指定ViewParent,也就是说,decorView的ViewParent就是ViewRootImpl。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容