RelativeLayout比LinearLayout更昂贵吗?
每次我需要一个View容器时,我一直在使用RelativeLayout,因为它的灵活性,即使我只想显示一些非常简单的东西。
是否可以这样做,还是从性能/良好实践的angular度来看,我应该尝试使用LinearLayout?
谢谢!
在Google I / O 2013(为Android编写自定义视图)中,Romain Guy澄清了这个误解,这个误解导致每个人都开始使用RelativeLayouts。 一个RelativeLayout总是要做两个度量。 总体而言,只要您的视图层次结构很简单,它是微不足道的。 但是如果你的层次结构很复杂,那么做一个额外的测量通过可能是相当昂贵的。 另外,如果你嵌套RelativeLayouts,你会得到一个指数测量algorithm。
除非你布置了大量的视图(例如在一个ListView中),在LinearLayout或RelativeLayout之间进行select的性能可以忽略不计。 select最适合工作的方式,只在需要时才担心性能。
以下是关于创build高效布局的官方文档,讲述了有关RelativeLayout和LinearLayout的性能:
不幸的是,坚持基本function不是创build用户界面的最有效的方法。 一个常见的例子是LinearLayout的滥用,这会导致视图层次结构中的视图泛滥。 所有添加到应用程序中的视图(或者更糟糕的是每个布局pipe理器)都需要付出代价:初始化,布局和绘制变得更慢。 当您嵌套使用weight参数的多个LinearLayout时,布局过程可能特别昂贵,这需要对子进行两次测量。
Relativelayout比Linearlayout更有效。
从这里 :
使用基本布局结构导致最有效的布局是一个常见的误解。 但是,添加到应用程序中的每个小部件和布局都需要初始化,布局和绘制。 例如,使用LinearLayout的嵌套实例会导致视图层次过深。 此外,嵌套使用layout_weight参数的LinearLayout的几个实例可能会特别昂贵,因为每个孩子都需要测量两次。 当布局反复膨胀时(例如在ListView或GridView中使用布局时),这一点尤其重要。
你可以试试
<LinearLayout> <ViewPager/><!--Loading images from net, it is very good as a testing case.--> <ViewPagerIndicator/> <TextView/> <!--Show some info about page--> </LinearLayout> <RelativeLayout> <ViewPager/><!--Loading images from net, it is very good as a testing case.--> <ViewPagerIndicator below="id of ViewPager"/> <TextView below="id of ViewPagerIndicator"/> <!--Show some info about page--> </RelativeLayout>
你会发现有很多不同的,如果你的网页从互联网上加载一些图像。 在这种情况下,LinearLayout比RelativeLayout好100%。