ConstraintLayout vs" Traditional"布局

时间:2017-06-10 21:39:49

标签: android android-layout

我只是想知道何时选择CoordinatorLayout" Traditional"布局或他们(或至少其中一些)将被弃用?

问题ConstraintLayout vs CoordinatorLayout已经告诉我,CoordinatorLayout仍然有其生存权。 我想象当只有一个子视图时,FrameLayout仍然比ConstraintLayout更好。

但关于其他布局的内容是什么?

我个人习惯于在xml中手工编写布局,因此转换到ConstraintLayout对我来说非常困难。此外,我对这个问题的答案非常感兴趣:

ConstraintLayout是否具有比嵌套布局更好的性能?如果是这种情况,会发生这种情况(嵌套级别)?

4 个答案:

答案 0 :(得分:12)

  

我只是想知道何时选择CoordinatorLayout   “传统的”布局或他们(或至少其中一些)去   被弃用?

所以ConstraintLayout很有用,但是(现在)它不是Android应用开发所必需的,任何 超过LinearLayoutRelativeLayout。而且,因为ConstraintLayout是一个 库,您需要采取一些额外的步骤将其添加到您的项目中(com.android.support.constraint:constraint-layout工件 依赖关闭模块的build.gradle文件),以及它 添加大约100KB的Android应用程序大小。

  

我个人习惯于在xml中手工编写布局   过渡到ConstraintLayout对我来说非常困难。

拖放GUI构建器

Google正在努力让开发人员的生活更轻松,让他们更快,更高效地工作,以便他们继续改进拖放式GUI构建器。然而,拖放手势,开发人员只是 根据开发人员的位置为您提供窗口小部件的X / Y坐标 释放鼠标按钮并完成放置。 使用LinearLayout添加小部件很容易。使用RelativeLayout很难让GUI bulder处理拖放操作,并且您可能需要深入挖掘XML代码才能完成任务。 ConstraintLayout是在创建GUI构建时创建的,以使其更容易 根据开发人员丢弃小部件的位置推断出正确的规则。

重新计算尺寸和位置

更改窗口小部件的详细信息通常会导致 必须重新计算的尺寸。例如TextView中的nne更改可能 导致整个层次结构重新调整大小/重新定位工作。如果你的容器里面有容器,这个容器位于另一个容器里面,那就意味着父母会重新调整孩子的大小/重新定位,这可能非常 深层次的代价很高 所以

  

ConstraintLayout是否具有比嵌套更好的性能   布局?

是的,ConstraintLayout的设计考虑了性能,试图消除 尽可能多地通过场景并试图消除对场景的需求 深度嵌套的视图层次结构。

嗯,

您可以从 CommonsWare 中查看有关Android开发的书籍。 使用ConstraintLayout更详细地解释了使用LinearLayoutRelativeLayout之类的其他容器的比较示例。确实解释了android开发。

答案 1 :(得分:4)

  

我想象FrameLayout仍然是比它更好的选择   当只有一个子视图时,ConstraintLayout。

我认为当你超越简单的布局时,ConstraintLayout的力量确实发生了。我认为目标(至少对我而言)是尽可能地平整复杂的布局。通过使用ConstraintLayout的全套帮助,例如GuidelineBarrier等隐形约束视图,指定垂直/水平layout_constraintVertical_bias并使用{查看分布{1}}。

如果您有一个嵌套layout_constraintVertical_chainStyle的复杂视图,请开始使用ViewGroup

  

我个人习惯于在xml中手工编写布局   过渡到ConstraintLayout对我来说非常困难。

对我来说也是如此。我曾经手工编写布局xml文件,我仍然使用ConstraintLayout。编辑器得到了很大改进,我主要使用它来确保约束看起来正确。有一段时间习惯于手工编写xml,但是一旦你开始,我对它更有信心然后编辑器添加你可能不知道的东西。

使用ConstraintLayout 的另一个原因:使用ConstraintLayout实现动画而不需要太多手动编码的好方法。一些很好的例子:https://robinhood.engineering/beautiful-animations-using-android-constraintlayout-eee5b72ecae3

答案 2 :(得分:2)

您可以继续使用其他布局来处理简单的事情(如果它们不被弃用),但ConstraintLayout更快,更智能,是的,具有比RelativeLayout更好的性能。

您可以查看此answer,了解ConstraintLayout和RelativeLayout之间的差异

答案 3 :(得分:0)

我会尽力回答您的问题。我认为您正在谈论的是Android开发中的布局。

首先,您仍然可以使用相对,线性,框架等所有布局。Android平台尚未对其进行折旧。从我的经验中可以知道,ConstrainLayout很难在xml中手动编码,但是如果您使用约束布局,Android Studio将为“拖放”提供相当不错的工具。这些工具几乎可以手动完成XML中通常要做的事情。此外,它们非常高效,可以节省大量时间。

就性能而言,Android中一项致命且昂贵的操作是呈现视图,尤其是在listview或recycler视图内部使用复杂的树视图时。通常以线性或相对布局设计的复杂树视图的计算和渲染成本很高。约束布局可以节省并帮助解决这些问题。

我强烈建议您通过以下链接查看Android官方文档,以获取更多参考。

https://developer.android.com/training/constraint-layout/