Closed
Description
如果不考虑布局的排版要求,那肯定是的FrameLayout大于LinearLayout中,LinearLayout中和RelativeLayout的相差无几。
- FrameLayout中的子元素都堆在屏幕的左上角,子元素不能指定位置,绘制起来当然效率高
.2。在阅读RelativeLayout和LinearLayout的源码中,我发现有这么一段注释:
//所以,而不是跑步代码两次,我们只是
将宽度设置为“默认显示宽度” 我们没有运行代码两次,而是将宽度设置为“默认显示宽度”
楼上说的都是RelativeLayout会绘制两次,这到底是怎么回事???
@Petterpx @Moosphan @kongxiaoan
首先很抱歉,我上面的回答有误,实际上应该是 测量(Measure)两次,回到原因上面,是因为:
RelativeLayout会对子View做两次measure。这是由于RelativeLayout是基于相对位置的,而且子View会在横向和纵向两个方向上分布,因此,需要在横向和纵向分别进行一次measure过程。而LinearLayout只进行纵向或横向的测量,所以measure的时间会比RelativeLayout少很多。但是如果设置了 weight,在测量的过程中,LinearLayout会将设置过weight的和没设置的分别测量一次,这样就导致measure两次。
Originally posted by @Petterpx in #30 (comment)
Metadata
Metadata
Assignees
Labels
No labels