写在前面:之前稍微复杂的设计实现,我们都可能会借助于嵌套实现,我们知道嵌套越多,性能就越低.而我们布局一般都是在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

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,当然这里不是啦

悬浮按钮效果

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

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

android鸿洋布局,Android基础ConstrainLayout约束布局的介绍和使用相关推荐

  1. 安卓APP_ 布局(6) —— ConstrainLayout约束布局(重要)

    摘自:安卓APP_ 布局(6) -- ConstrainLayout约束布局(重要) 作者:丶PURSUING 发布时间: 2021-04-12 10:49:42 网址:https://blog.cs ...

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

    写在前面:之前稍微复杂的设计实现,我们都可能会借助于嵌套实现,我们知道嵌套越多,性能就越低.而我们布局一般都是在xml里面进行实现,拖拽的话估计现在android开发者都不会去使用.为了提升开发者的可 ...

  3. android布局参照示例_约束布局Android示例–第2部分

    android布局参照示例 This is the second tutorial in the series of posts on Constraint Layout android exampl ...

  4. 张鸿洋 视频 android,PageStateManager 在张鸿洋的 LoadingAndRetryManager 的基础上改写,优化 api,封装 @codeKK Android开源站...

    页面状态管理 在张鸿洋的LoadingAndRetryManager的基础上改写,修正一些 bug,优化 api,并提供使用时封装的例子 特性 api 超级简单 可以在 xml 中使用 Statefu ...

  5. android约束布局中 链,Android-ConstraintLayout(约束布局)-Chains链(链条布局,Nice)

    到Chains这个部分了.之前的新项目做得登录,注册,重置密码等暂时还没用到这种.不过后面可能随着新的设计可能会涉及到.所以赶紧过来看看先.新项目基本就打算全部用约束布局实现了.实际用了也会越来越熟悉 ...

  6. ConstrainLayout约束布局

    目录 基本位置约束 基本方向约束 基线对齐 角度约束 百分比偏移 控件的内边距和外边距 外边距 内边距 尺寸控制 尺寸限制 0dp 0dp还有一些其他的独特属性用于设置尺寸的大小限制 比例宽高 Cha ...

  7. 安卓入门系列-06常见布局之ConstraintLayout(约束布局)

    约束布局(ConstraintLayout)的使用 背景 之前已经提到了六大基础布局的最常见的两种,其余四种百度都有完整的教程,不多提及了.但是在布局的最后想提一下这个突然崛起的约束布局. 很多人说现 ...

  8. android屏幕录制鸿洋,Android之自定义View笔记(鸿洋)

    本文是对鸿洋的Android自定义View系列的文章学习的笔记.先说自定义View的步骤: 1.自定义View的属性 2.在View的构造方法中获得我们自定义的属性 3*.重写onMesure()方法 ...

  9. Android App开发超实用实例 | 约束布局

    从多个角度介绍约束布局设计中的控件定位. 01.约束布局基础 从 Android Studio 2.3版本起,约束布局是Android Studio布局文件的默认布局.其他布局方式在实现复杂一些的布局 ...

最新文章

  1. 人生苦短,我要换Go!
  2. if else流程判断
  3. 2017 年最流行的 15 个数据科学 Python 库
  4. JavaScript面向对象编程——Array类型
  5. linux下安装 QQ(wine qq 2013-2014)
  6. 下列哪个滤波器是非线性的_数字图像处理复习题(选择题及相应答案)
  7. linux 多线程 写日志,rsyslog多线程远程日志记录介绍(lamp+rsyslog)
  8. tomcat(5)servlet容器
  9. Linux C++ 回射服务器
  10. Mybatis 插入数据后返回自增主键ID
  11. python 自动收集经济数据_完结】数据分析思维案例实战92 用Python自动办公,做职场高手【更新中】91.一课经济...
  12. java应用商店,API for Java 8
  13. 山西省吕梁市职称计算机考试,山西吕梁考点2012年职称计算机考试时间通知
  14. python解题工程力学_工程力学学习指导与解题指南(普通高等教育十三五规划教材)...
  15. 7-1 计算平均成绩 (15分)
  16. [乐意黎原创]向上取整⌈⌉和向下取整⌊⌋符号含义及应用
  17. 公众号文章排版样式——隐藏样式
  18. JVM(周志明著深入了解JVM书归纳,新写一点就重新传一遍)
  19. java实现下载网络图片到本地
  20. 享受知识饕餮盛宴,尽在2016年课程安排

热门文章

  1. 聊聊数仓中TPCD-DSTPC-H与查询性能的那些事儿
  2. 解读革命性容器集群CCE Turbo:计算、网络、调度全方位加速
  3. 周杰伦新歌《说好不哭》上线,程序员哭了......【华为云分享】
  4. mysql5.7 glibcxx_3.4.15_Percona Server安装可能出现的问题 version `GLIBCXX_3.4.15' not found ...
  5. 中国移动研究院人力群面
  6. Node.js抓取网页信息(cheerio网络爬虫)
  7. jQuery学习之三---工具
  8. linux部署3proxy源码,在CentOS 7系统中从源码安装RTPProxy的方法
  9. oracle rac ora 12547,oracle11g RAC 下DBCA建库失败:ORA-12547: TNS:lost contact
  10. 服务器文件绝对路径,服务器文件绝对路径