如题View与ViewGroup里的方法调用过程总结如下:
1.首先,Activity onCreate并初始化view
2.然后,Activity onResume后调用view的onAttachedToWindow,因此常常在onAttachedToWindow方法中做初始化工作,比如注册一些广播、开始动画等等……
3.接下来,如果设置了背景则调用onDraw,之后倘若是viewgroup则调用dispatchDraw。
说明:dispatchDraw()主要是分发给子组件进行绘制,我们通常定制组件的时候重写的是onDraw()方法。值得注意的是ViewGroup容器组件的绘制,当它没有背景时直接调用的是dispatchDraw()方法, 而绕过了draw()方法,当它有背景的时候就调用draw()方法,而draw()方法里包含了dispatchDraw()方法的调用。因此要在ViewGroup上绘制东西的时候往往重写的是dispatchDraw()方法而不是onDraw()方法,或者自定制一个Drawable,重写它的draw(Canvas c)和 getIntrinsicWidth(),getIntrinsicHeight()方法,然后设为背景。
4.最后,当点击回退键时,Activity onDestroy后才调用onDetachedFromWindow,这时我们就在这个方法做一些收尾工作,如:取消广播注册、停止动画等等。
说明:onDraw与dispatchDra

本文总结了Android中View和ViewGroup的生命周期,包括onCreate、onResume后的onAttachedToWindow适合做初始化,onDraw与dispatchDraw的区别,以及onDetachedFromWindow用于收尾工作。在创建过程中,onMeasure和onLayout会被多次调用。点击返回键时,如果有背景,ViewGroup会调用draw,否则只调用dispatchDraw。
最低0.47元/天 解锁文章
2001

被折叠的 条评论
为什么被折叠?



