在最新的 Android Studio 2.2 Preview 1 中, Google 在 UI 布局上提供了一个新的默认布局方式: Constraint Layout 。
具体介绍: http://tools.android.com/tech-docs/layout-editor
当然现在还有很多问题,譬如打开预览就会报错之类的…… Google 也承诺会“ rapidly ”更新这个 API 。
然而有一点没有明白……既然有了 Relative Layout ,为什么还要学习 iOS 弄一个这个出来呢?官方给的解释并不太具有说服力,至少用 Relative Layout 也都能做到……
于是乎,请教一下~
1
kyze8439690 2016-05-20 10:58:29 +08:00
Google 这种头脑发热就上的东西多了去了,没必要深究。
|
2
Majirefy OP @kyze8439690 Google 精虫上脑,把所有新建工程的模板全部改成了默认 Constraint Layout ……
|
3
yaoyuan131617 2016-05-20 11:41:27 +08:00
官方的说辞是 告别 xml 、布局快、可响应不同尺寸、性能好 ...
当然我也信了... |
4
Majirefy OP @yaoyuan131617 其他的 Layout 也可以相应不同尺寸啊……
布局快……难道真的有人在实际开发中用鼠标拖么……而且拖的话问题很多吧…… 性能好……是因为可以减少一些 Layout 嵌套么? |
5
21grams 2016-05-20 11:44:51 +08:00
旧的还没摸熟新的又来了。
|
6
Bown 2016-05-20 13:19:00 +08:00
This new layout is a flexible layout manager for your app that allows you to create dynamic user interfaces without nesting multiple layouts.
demo 看不出实际开发体验如何,编辑器看着挺不错,不过就减层级这一点还是很关键的, layout 和 measure 的性能提升、以及低端机上布局嵌套太深的 StackOverflowError 得以解决 |
8
torchmu 2016-05-20 13:40:30 +08:00
动效确实满炫酷的
|
9
earnrepuNey 2016-05-20 13:42:33 +08:00
官方还出了一个 Flexbox_layout 呢
|
10
Majirefy OP |
11
emanonwzy 2016-05-20 13:51:49 +08:00
挺好的,希望以后可以不用再手写 xml
|
12
814084764 2016-05-20 13:52:14 +08:00
这是要换 swift 的前奏吗?
|
13
mozartgho 2016-05-20 14:05:59 +08:00
感觉主要是设计工具更强大了,但是还是觉得没有直接写 layout xml 方便啊
|
14
longaiwp 2016-05-20 14:11:24 +08:00
唉, Google 总是做这些开历史倒车的事情,我也不想多说什么了
|
15
Majirefy OP @mozartgho 感觉不管是几十年前 Basic 还是现在的 Android ,都想让初学者拖控件玩……然而几十年过去了,开发者们还是偏向于手写界面布局………………
|
17
sdqhzhm 2016-05-20 14:31:30 +08:00
复杂的布局上, Layout 层级的减少和很多小细节的优化是可以极大的提升流畅度的。 Constraint Layout 的构建应该也是基于这种原因。
|
18
Majirefy OP @sdqhzhm 那刚刚开源的 FlexBox Layout 什么意思? https://github.com/google/flexbox-layout
这个也能做到类似的效果吧…… Google 的哲学是啥,一个效果可以通过 n 个解决方案么,没有 best practice 么…… |
19
monsoon 2016-05-20 14:42:49 +08:00 via Android 1
楼主,别听楼上那些消极的建议。
这个布局是 Android 跨时代的一个布局! 而且 Android Studio 组和开发这个的组应该花了非常非常大的时间。 今年 Android I/O 大会里介绍今年 Android 的开发的变化,这是布局是第一个开始介绍的。 |
20
monsoon 2016-05-20 14:47:24 +08:00 via Android
这个布局的教程可以看 https://codelabs.developers.google.com/codelabs/constraint-layout/index.html#0
这个布局可以做的事情比想象中要多的多。 明天还有有一个 i/o event 专门介绍这个布局。 |
21
Majirefy OP |
22
learnshare 2016-05-20 14:59:33 +08:00
我只想到了 Qt Designer 的布局编辑器有类似的特性
|
23
audi 2016-05-20 15:05:09 +08:00
Android Studio 相比 xCode 还有很大的差距
|
24
sdqhzhm 2016-05-20 15:08:48 +08:00
@Majirefy 概念不同吧, Constraint Layout 里面分组,相对,横竖屏响应的概念更接近 Android 原有 Layout 的思路。 Flexbox 应付的场景和思路和 Constraint 还是不一样的。
|
25
monsoon 2016-05-20 15:09:54 +08:00 via Android
@Majirefy
两个布局之间解决的问题或者侧重点不一样。 新布局可能要解决一些布局过深、控件之间的关系、不同屏幕下布局的改变之类的问题。 FlexBox 我也了解不多,不过这个可能是 Google 什么组里某几个人写的吧,感觉和 Android Framework 和 Support 那几个组可能没什么联系。 现在关于新的布局的信息还不多,官方也还没说新的布局的性能之类的相关的信息。可能等明天这个布局的 event 解说后就会有什么新情报吧。 |
27
ldehai 2016-05-20 15:25:40 +08:00
我是用完 Xcode 再去用 Android Studio ,发现这个布局方式跟 Xcode 完全不一样。
适应之后发现比 Xcode 的约束用起来方便。 Xcode 里面的 Stack View 跟 AS 里面的 LinearLayout 有异曲同工之处。 现在 AS 又向 Xcode 学习用约束了。相互取经也挺好的。用自己喜欢的就好了。 |
28
allan1st 2016-05-20 16:18:09 +08:00 via Android
@EchoWhale 想太多了。昨天 IO 上官方明确说了不会支持 swift 。另一个 jvm 语言貌似是可能的,但应该也不是近期。
|
30
yeelone 2016-05-20 22:54:13 +08:00 via Android
期待 kotlin
|
31
Makoshan 2016-05-21 10:17:36 +08:00
太多 Android 新手只会用 LinearLayout 布局,导致 App 的层级太多,常有人吐槽 Android App 卡的一个原因。 RelativeLayout 布局花的的时间太多,如果有一个更好的布局系统,至少代替 LinearLayout 没什么不好的, Constraint Layout 应该抄的 StoryBoard 那一套。反正我做 iOS 开发的时候都是直接拖的控件, Android Studio 拖控件做的不如人意,经常是手写 xml ,现在有一个更好用的拖布局的工具,而且生成的是相对布局,简单的页面还是可以考虑用的。
|
32
dphdjy 2016-05-21 12:52:20 +08:00 via Android
Constraint Layout 类似于 Relative Layout 的升级,因为现在很多应用界面层级太多,过度重绘,然后卡成狗,所以出了这个更加扁平的布局,相对于 Relative Layout 支持了更多的控件间的相对关系
还有更佳友好的拖动,感觉没什么用~直接写比较快~ https://mobile.twitter.com/i/status/733697675149910016/photo/1 https://mobile.twitter.com/i/status/733767632751562753/photo/1 http://wehuibao.com/docq/526735 |
33
ayaseangle 2016-05-21 16:42:31 +08:00
不就是 autolayout 嘛。。。
|
34
Ervin 2016-05-23 23:50:08 +08:00 via Android
这种模式适合简单布局,如果要滑动就跪了。而且个人感觉拖控件去布局太 low 了,跟微软那一套一样。不建议使用,还是手写 XML 比较舒服。
|
35
fan123199 2017-05-31 11:02:27 +08:00
RelativeLayout 相当的难用。ConstraintLayout,既可以拖动,也可以手写,大大提升效率。
|