我认为我在Android中确实没有嵌套超过三个级别的布局(RelativeLayout
,LinearLayout
,FrameLayout
)。我不是在考虑列表项,它们也使用ListView
的自定义布局,而只是活动的正常布局。
尽管如此,我正在与另一位开发人员聊聊我们正在讨论的某个布局的嵌套布局,他似乎认为即使是几个嵌套布局也会降低性能。我认为有一些事实,但它不能那么多。
有没有人对此有更专业的方法?有什么输入?看来?
感谢。
对于在Google上找到的人的更新: 下面的第一个答案是一个很好的资源。它看起来很多,人们似乎跳过这样的答案,但请检查出来。很有价值。
答案 0 :(得分:31)
我猜这里没有银弹,但我会给你一些提示:
1)尝试使用随android sdk提供的工具。
我倾向于使用hierarchyviewer
和layoutopt
分析我的布局,尝试减少使用的View
数量和树的高度。
2)阅读Romain Guy关于<include>
,<merge>
和<ViewStub>
的帖子
这些标签不经常使用,但它们提供了极快的“黑客”。
3)使用dmtracedump
并衡量对视图进行充气所需的时间。
您可以查看充气视图所需的时间。获取一个inflater并测量为每个选项充气所需的时间。
答案 1 :(得分:1)
我还没有做任何正确的测试来支持这个,我相信android设计使用嵌套Layouts以便为用户提供足够的UI,它实际上是支持多个屏幕的唯一方法所以我不会真的担心哪个是最有效的,只是它看起来应该如此。
任何其他糟糕的编程习惯可能会比布局嵌套对效率产生更大的影响。
答案 2 :(得分:0)
例如,当您对ListView中的每个项目使用这样的布局时,差异将变得更加重要。希望this simple example向您展示了解您的布局是学习如何优化UI的最佳方式。
答案 3 :(得分:0)
不能给你一个完整的答案,但是Romain Guy明确指出嵌套的RelativeLayouts有一个指数的测量时间。
答案 4 :(得分:-3)
实际上所有这些都基于同一个班级.. 但最好按照我的说法使用如下:
<RelativeLayout>
<LinearLayout>
<at> here we just create nested more as we wont></at>
</LinearLayout>
</RelativeLayout>