RelativeLayout比LinearLayout更昂贵吗?

nba*_*lle 113 performance android android-linearlayout android-relativelayout

每次我需要一个View容器时,我一直在使用RelativeLayout,因为它的灵活性,即使我只是想显示一些非常简单的东西.

这样做是否可以,或者我应该从性能/良好实践的角度尝试使用LinearLayout?

谢谢!

Pie*_*tte 147

在Google I/O 2013(为Android编写自定义视图)的演讲中,Romain Guy澄清了导致每个人开始使用RelativeLayouts的误解.RelativeLayout总是必须进行两次测量.总的来说,只要您的视图层次结构很简单,它就可以忽略不计.但是,如果您的层次结构很复杂,那么进行额外的度量传递可能会相当昂贵.此外,如果您嵌套RelativeLayouts,您将获得指数测量算法.

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s

  • 我知道这是一个老帖子,但在单个相对布局和2-3个线性布局之间进行选择时,您会认为哪种解决方案成本最低? (8认同)
  • ConstraintLayout :) (5认同)

Lie*_*yan 52

除非您正在布置大量视图(例如在ListView中),否则在LinearLayout或RelativeLayout之间进行选择的性能可以忽略不计.选择最适合工作的方式,只在需要时担心性能.

以下是关于创建高效布局的官方文档关于RelativeLayout和LinearLayout的性能的说明:

遗憾的是,坚持基本功能并不是创建用户界面的最有效方法.一个常见的例子是滥用LinearLayout,这会导致视图层次结构中的视图激增.您添加到应用程序中的每个视图(或更糟糕的是,每个布局管理器)都需要付出代价:初始化,布局和绘图变慢.当您嵌套多个使用weight参数的LinearLayout时,布局传递可能会特别昂贵,这需要对子进行两次测量.

  • 它的理由可以忽略不计?我发现这表明relativeLayout的成本更高,就像我怀疑https://bitbucket.org/spencerelliott/mercury/issue/1/changing-relativelayout-to-linearlayout (3认同)