Android 喜迎 Constraint Layout - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Majirefy
V2EX    Android

Android 喜迎 Constraint Layout

  •  
  •   Majirefy 2016-05-20 10:56:43 +08:00 17536 次点击
    这是一个创建于 3482 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在最新的 Android Studio 2.2 Preview 1 中, Google 在 UI 布局上提供了一个新的默认布局方式: Constraint Layout 。

    具体介绍: http://toolsandroid.com/tech-docs/layout-editor

    当然现在还有很多问题,譬如打开预览就会报错之类的…… Google 也承诺会“ rapidly ”更新这个 API 。

    然而有一点没有明白……既然有了 Relative Layout ,为什么还要学习 iOS 弄一个这个出来呢?官方给的解释并不太具有说服力,至少用 Relative Layout 也都能做到……

    于是乎,请教一下~

    35 条回复    2017-05-31 11:02:27 +08:00
    kyze8439690
        1
    kyze8439690  
       2016-05-20 10:58:29 +08:00
    Google 这种头脑发热就上的东西多了去了,没必要深究。
    Majirefy
        2
    Majirefy  
    OP
       2016-05-20 10:59:47 +08:00
    @kyze8439690 Google 精虫上脑,把所有新建工程的模板全部改成了默认 Constraint Layout ……
    yaoyuan131617
        3
    yaoyuan131617  
       2016-05-20 11:41:27 +08:00
    官方的说辞是 告别 xml 、布局快、可响应不同尺寸、性能好 ...
    当然我也信了...
    Majirefy
        4
    Majirefy  
    OP
       2016-05-20 11:43:54 +08:00
    @yaoyuan131617 其他的 Layout 也可以相应不同尺寸啊……

    布局快……难道真的有人在实际开发中用鼠标拖么……而且拖的话问题很多吧……

    性能好……是因为可以减少一些 Layout 嵌套么?
    21grams
        5
    21grams  
       2016-05-20 11:44:51 +08:00
    旧的还没摸熟新的又来了。
    Bown
        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 得以解决
    Majirefy
        7
    Majirefy  
    OP
       2016-05-20 13:24:08 +08:00
    @Bown 的确可以减少 layout 嵌套

    自己现在用编辑器还不停报错……
    torchmu
        8
    torchmu  
       2016-05-20 13:40:30 +08:00
    动效确实满炫酷的
    earnrepuNey
        9
    earnrepuNey  
       2016-05-20 13:42:33 +08:00
    官方还出了一个 Flexbox_layout 呢
    Majirefy
        10
    Majirefy  
    OP
       2016-05-20 13:46:31 +08:00
    @torchmu 编辑器效果堪比某些 App 了……


    @earnrepuNey 这个没有注意到,具体说一下?
    emanonwzy
        11
    emanonwzy  
       2016-05-20 13:51:49 +08:00
    挺好的,希望以后可以不用再手写 xml
    814084764
        12
    814084764  
       2016-05-20 13:52:14 +08:00
    这是要换 swift 的前奏吗?
    mozartgho
        13
    mozartgho  
       2016-05-20 14:05:59 +08:00
    感觉主要是设计工具更强大了,但是还是觉得没有直接写 layout xml 方便啊
    longaiwp
        14
    longaiwp  
       2016-05-20 14:11:24 +08:00
    唉, Google 总是做这些开历史倒车的事情,我也不想多说什么了
    Majirefy
        15
    Majirefy  
    OP
       2016-05-20 14:22:12 +08:00
    @mozartgho 感觉不管是几十年前 Basic 还是现在的 Android ,都想让初学者拖控件玩……然而几十年过去了,开发者们还是偏向于手写界面布局………………
    EchoWhale
        16
    EchoWhale  
       2016-05-20 14:27:20 +08:00
    @814084764 说不定真的上 swift 啊
    sdqhzhm
        17
    sdqhzhm  
       2016-05-20 14:31:30 +08:00
    复杂的布局上, Layout 层级的减少和很多小细节的优化是可以极大的提升流畅度的。 Constraint Layout 的构建应该也是基于这种原因。
    Majirefy
        18
    Majirefy  
    OP
       2016-05-20 14:35:03 +08:00
    @sdqhzhm 那刚刚开源的 FlexBox Layout 什么意思? https://github.com/google/flexbox-layout

    这个也能做到类似的效果吧…… Google 的哲学是啥,一个效果可以通过 n 个解决方案么,没有 best practice 么……
    monsoon
        19
    monsoon  
       2016-05-20 14:42:49 +08:00 via Android   1
    楼主,别听楼上那些消极的建议。
    这个布局是 Android 跨时代的一个布局!
    而且 Android Studio 组和开发这个的组应该花了非常非常大的时间。
    今年 Android I/O 大会里介绍今年 Android 的开发的变化,这是布局是第一个开始介绍的。
    monsoon
        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 专门介绍这个布局。
    Majirefy
        21
    Majirefy  
    OP
       2016-05-20 14:52:15 +08:00
    @monsoon 嗯嗯,之前去你给的那个网址看过。的确能解决不少问题~~

    这个较比 FlexBox Layout ,怎么样呢?
    learnshare
        22
    learnshare  
       2016-05-20 14:59:33 +08:00
    我只想到了 Qt Designer 的布局编辑器有类似的特性
    audi
        23
    audi  
       2016-05-20 15:05:09 +08:00
    Android Studio 相比 xCode 还有很大的差距
    sdqhzhm
        24
    sdqhzhm  
       2016-05-20 15:08:48 +08:00
    @Majirefy 概念不同吧, Constraint Layout 里面分组,相对,横竖屏响应的概念更接近 Android 原有 Layout 的思路。 Flexbox 应付的场景和思路和 Constraint 还是不一样的。
    monsoon
        25
    monsoon  
       2016-05-20 15:09:54 +08:00 via Android
    @Majirefy
    两个布局之间解决的问题或者侧重点不一样。
    新布局可能要解决一些布局过深、控件之间的关系、不同屏幕下布局的改变之类的问题。
    FlexBox 我也了解不多,不过这个可能是 Google 什么组里某几个人写的吧,感觉和 Android Framework 和 Support 那几个组可能没什么联系。

    现在关于新的布局的信息还不多,官方也还没说新的布局的性能之类的相关的信息。可能等明天这个布局的 event 解说后就会有什么新情报吧。
    Majirefy
        26
    Majirefy  
    OP
       2016-05-20 15:17:27 +08:00
    @monsoon 谢谢回答!

    嗯嗯,有什么新内容,也欢迎在这儿更新~~~
    ldehai
        27
    ldehai  
       2016-05-20 15:25:40 +08:00
    我是用完 Xcode 再去用 Android Studio ,发现这个布局方式跟 Xcode 完全不一样。
    适应之后发现比 Xcode 的约束用起来方便。 Xcode 里面的 Stack View 跟 AS 里面的 LinearLayout 有异曲同工之处。
    现在 AS 又向 Xcode 学习用约束了。相互取经也挺好的。用自己喜欢的就好了。
    allan1st
        28
    allan1st  
       2016-05-20 16:18:09 +08:00 via Android
    @EchoWhale 想太多了。昨天 IO 上官方明确说了不会支持 swift 。另一个 jvm 语言貌似是可能的,但应该也不是近期。
    plqws
        29
    plqws  
       2016-05-20 22:11:20 +08:00
    @allan1st 上另一个 jvm 语言……是 kotlin 吗
    yeelone
        30
    yeelone  
       2016-05-20 22:54:13 +08:00 via Android
    期待 kotlin
    Makoshan
        31
    Makoshan  
       2016-05-21 10:17:36 +08:00
    太多 Android 新手只会用 LinearLayout 布局,导致 App 的层级太多,常有人吐槽 Android App 卡的一个原因。 RelativeLayout 布局花的的时间太多,如果有一个更好的布局系统,至少代替 LinearLayout 没什么不好的, Constraint Layout  应该抄的 StoryBoard 那一套。反正我做 iOS 开发的时候都是直接拖的控件, Android Studio 拖控件做的不如人意,经常是手写 xml ,现在有一个更好用的拖布局的工具,而且生成的是相对布局,简单的页面还是可以考虑用的。
    dphdjy
        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
    ayaseangle
        33
    ayaseangle  
       2016-05-21 16:42:31 +08:00
    不就是 autolayout 嘛。。。
    Ervin
        34
    Ervin  
       2016-05-23 23:50:08 +08:00 via Android
    这种模式适合简单布局,如果要滑动就跪了。而且个人感觉拖控件去布局太 low 了,跟微软那一套一样。不建议使用,还是手写 XML 比较舒服。
    fan123199
        35
    fan123199  
       2017-05-31 11:02:27 +08:00
    RelativeLayout 相当的难用。ConstraintLayout,既可以拖动,也可以手写,大大提升效率。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1536 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 53ms UTC 16:34 PVG 00:34 LAX 08:34 JFK 11:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86