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

Android 喜迎 Constraint Layout

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

    在最新的 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 也都能做到……

    于是乎,请教一下~

    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   ·   实用小工具   ·   5123 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:39 · PVG 17:39 · LAX 01:39 · JFK 04:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.