我只是想知道何时选择CoordinatorLayout" Traditional"布局或他们(或至少其中一些)将被弃用?
问题ConstraintLayout vs CoordinatorLayout已经告诉我,CoordinatorLayout仍然有其生存权。 我想象当只有一个子视图时,FrameLayout仍然比ConstraintLayout更好。
但关于其他布局的内容是什么?
我个人习惯于在xml中手工编写布局,因此转换到ConstraintLayout对我来说非常困难。此外,我对这个问题的答案非常感兴趣:
ConstraintLayout是否具有比嵌套布局更好的性能?如果是这种情况,会发生这种情况(嵌套级别)?
答案 0 :(得分:12)
我只是想知道何时选择CoordinatorLayout “传统的”布局或他们(或至少其中一些)去 被弃用?
所以ConstraintLayout
很有用,但是(现在)它不是Android应用开发所必需的,任何
超过LinearLayout
和RelativeLayout
。而且,因为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
更详细地解释了使用LinearLayout
,RelativeLayout
之类的其他容器的比较示例。确实解释了android开发。
答案 1 :(得分:4)
我想象FrameLayout仍然是比它更好的选择 当只有一个子视图时,ConstraintLayout。
我认为当你超越简单的布局时,ConstraintLayout
的力量确实发生了。我认为目标(至少对我而言)是尽可能地平整复杂的布局。通过使用ConstraintLayout
的全套帮助,例如Guideline
和Barrier
等隐形约束视图,指定垂直/水平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官方文档,以获取更多参考。