Android基础ConstrainLayout约束布局的介绍和使用

写在前面:之前稍微复杂的设计实现,我们都可能会借助于嵌套实现,我们知道嵌套越多,性能就越低.而我们布局一般都是在xml里面进行实现,拖拽的话估计现在android开发者都不会去使用.为了提升开发者的可视化编程,谷歌官方在2016年的i/o大会上提出了一个新的组件Constrainlayout中文可以翻译成"约束布局".听我ios的同事说他们很早之前就有了类似的组件,说实话真的是很羡慕ios开发者,苹果提供了那么多的组件方便调用......苦逼了我们android开发人员,不过还好android也出现了很多很好用的组件,有朝一日或许可以和ios系统并驾齐驱......有点小激动呢;好了废话不多说,开始我们"约束布局".

说明:本文内容是我从鸿洋大神的微信公章号看到的,看完之后从我自身的理解,写了下学习收获,若有兴趣您可以关注鸿洋大神微信查看,原始文章链接如下.

https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650824132&idx=1&sn=1cf09caa325d83de12b73c615fc9613e&chksm=80b7895ab7c0004c5cbb2175a3da302fc13d612762f56094f13b80e1334e7655dde1ad00083c&mpshare=1&scene=23&srcid=0918DtSCuT4xSSd8Mmjjscto#rd

特点

1.扁平化:

ConstraintLayout构建布局的话,相比之前相对布局嵌套线性或者反之,简单明了很多,可以借用一张网上的图片查看一下,

据调查ConstraintLayout 在测量/布局阶段的性能比 RelativeLayout大约高 40%:

基本上不用在使用其他布局,只需要添加需要的控件即可

2.灵活性

我们想要添加或修改布局也比以往要容易简单很多,另外,使用约束布局,其自带的百分比属性,一定会让你开怀大笑一分钟.举个例子如下图所示



 宽度铺满,宽高比是10:6

<TxtView

android:id="@+id/textview"

android:layout_width="0dp"

android:layout_height="0dp"

android:background="#765"

android:gravity="center"

android:text="banner"

app:layout_constraintDimensionRatio="H,10:6"//宽度铺满,宽高比10:6 也可以写成W,10:60

app:layout_constraintLeft_toLeftOf="parent"//和父布局左侧对齐

app:layout_constraintRight_toRightOf="parent"// 和父布局右侧对齐/>

之前想要实现这样的效果,需要我们在代码去new一个 params.现在只用我们去设置属性就好.

ok下面我们就使用几个例子来介绍下如何使用约束布局;(PS:这里的demo都是从)



 是不是很熟悉这样的布局

上面截图的布局,我们使用相对布局肯定是可以实现,但是今天我们可以使用约束布局来实现.


1-1
1-2

在上面我们看到了几个类似相对布局的属性,我们一一来介绍.

app:layout_constraintLeft_toLeftOf="parent"//在父布局的左侧

app:layout_constraintTop_toTopOf="parent"//在父布局顶部

类似还有右侧和底部...

app:layout_constraintLeft_toRightOf="@id/textView3"//该控件的右侧是textView3,也可以理解是左侧是textview3

app:layout_constraintRight_toRightOf="parent"//在父布局右侧

app:layout_constraintTop_toTopOf="@id/textView3"//和textview在同一水平线

app:layout_constraintBottom_toBottomOf="@id/textView3"// 控件和textview3底部相持平

类似还有一些属性,大家一眼就能明白,这里不在多说

第二个例子:约束布局中是没有match_parent的,但是可以设置为0dp,ConstraintLayout中0代表:MATCH_CONSTRAINT;

看下面的两张截图,我们可以发现不同之处


相对布局


约束布局

这里的第二个button处于剩余空间的中间位置.而不是占据剩余宽度.

这里我们只要把width修改为0dp,那么就和相对布局是一样的效果了;

第三个例子:

实现线性布局的weight功能,但是要比其强大.先看效果图


和线性布局一致

此时,width设置为0dp,设置属性app:layout_constraintHorizontal_chainStyle="spread"

稍作变化

此时设置width不为0,属性app:layout_constraintHorizontal_chainStyle="spread"

所有的情况

这个是所有组合之后实现的效果.,是不是比线性布局的weight要强大一些....

第四个例子:类似我们的悬浮按钮.FloatingActionButton,当然这里不是啦


悬浮按钮效果

当然,使用相对布局也是可以实现的,但是使用约束布局,会有惊喜哦

<Textview

android:id="@+id/textView"

android:layout_width="60dp"

android:layout_height="60dp"

android:background="@color/colorAccent"

android:gravity="center"

android:text="TextView"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintHorizontal_bias="0.9"// 看这里,设置左右两侧间隙比例为10:9

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.9"// 看这里 设置上下两侧间隙比例为10:9

/>

ok,基本上就这些了,写了主要是让自己梳理下,本文非原创,上面写了出处,再次感谢鸿洋大神的文章分享.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容