安卓基础

浅析 ViewStub 原理

2022-04-30  本文已影响0人  在岁月中远行

ViewStub更加轻量级,它本身是一个不可见的 View,资源消耗比较小,只有调用了ViewStub.inflate()的时候加载布局,布局才会实例化。

下面我们直接进行源码分析:

接下来分析setVisibility方法

通过上面的代码分析我们可以得出 setVisibility 最后调用的还是 inflate,所以这个方法才是关键

接下来看inflateViewNoAdd方法:

接着看replaceSelfWithView方法

最后总结一下:

ViewStub通过设置Gone以及设置宽和高都为0,以及setWillNotDraw(true)来达到自己不绘制不渲染的效果,其实就是占一个坑位意思。

ViewStub只能调用一次setVisibility方法,而setVisibility最后还是调用inflate方法,在replaceSelfWithView中indexOfChild代码中,如果ViewStub被移除了以后,index则是-1,那么addView的时候会抛出异常的。

上一篇 下一篇

猜你喜欢

热点阅读