动态图解&实例 ConstraintLayout Chain(1)

实战


talking is cheap。让我们一起实战一波,先看一个设计稿:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是一个常见的详情或Item的布局。

以往情况,如果不使用ConstraintLayout,我们一般会通过嵌套LinearLayout或者使用RelativeLayout去实现它。

嵌套LinearLayout肯定是低效的low方式,我们不提。

而如果有经验的老司机应该会知道,RelativeLayout实现起这种布局是很烦心的,

因为它大体是按照竖直排列,在局部又水平分布了几个控件,我们要死去活来的写N多的below rightOf

(而且如果RelativeLayout如果要实现几个TextSize不一样 TextView 居中对齐是挺麻烦的。 虽然这个设计稿上没有出现这种case。而现在可以通过ChainAlign轻松实现它。)

DuangDuangDuangDuang,现在ConstraintLayout横空出世,让我们用拖拖拽拽点点的方式来轻松实现它吧。

第一步,去xml修改父布局宽高为WRAP_CONTENT

第二步,拖拽一个ImageView,并按设计稿设置尺寸,布局在父控件顶端

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们只是为了测试,可以设置图片为fitxy,便于观察效果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第三步,拖拽四个TextView,竖直排列。顺便按照设计稿填充颜色、尺寸等元素

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(这两个步骤我撸了四五次,都撸不出完整的gif,大家凑合看,这两张图已经展示了,可以通过Design区域去设置text、textColor、textSize等等等属性)

第四步,设置四个TextView之间的约束、间距等

(我尽力了,电脑上撸这么大的GIF图貌似时长有问题,所以我重复了N次这个过程,分别撸了几张图如下:)

操作步骤就是:利用控件四个边中点的圆圈,和其他控件发生约束。可以利用右侧面板修改控件的属性值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第五步,拖拽两个TextView放在底部,按照设计稿填充颜色、尺寸等

图略,和第三步相似。(其实是图又录坏了)

第六步,按照设计稿约束底部三个TextView,设置边距等

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于精细尺寸,例如这里三个TextView间距大概5dp,可以通过Inspector区域设置:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第七步, 布局 购物车 加减按钮

购物车按钮使用的是一个自定义View

所以这一小节也顺便讲解如何在ConstraintLayout中拖拽使用自定义View。

关于这个购物车控件,我之前写过相关博文,github地址:https://github.com/mcxtzhang/AnimShopButton。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在左上角Pallete区域点击Advanced->view,然后拖动至布局区域后,会弹出弹框让我们选择,我们搜索AnimShopButton(自定义View的名称)即可。

第八步,为 购物车控件 添加约束

查看设计稿,该控件是位于父控件右下角,距离右边和底边有14dp的间距:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第九步,使底部三个TextView竖直居中

这一步是我强加的戏,为了展示Chain的作用。

我把底部的几个控件链接成Chain,并且改变了使它们竖直方向也相对居中。

这时界面突然收缩了,显然是约束哪里出了问题。

于是我们切换到Text页面,查看代码具体哪里出了问题,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

定位到价格TextView后,

检查约束,

如果是我们自己手写约束,

app:layout_constraintVertical_bias="1.0"应该不会被写下来,

这一条约束应该是和父控件的WRAP_CONTENT一起,导致布局收缩了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

删掉该条约束,界面预览正常。

第十步,在根布局外面套一层CardView,运行

运行后效果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总结


可以看出,ConstraintLayoutChain的概念,和前端JS中flex布局是一样的。

如果有ReactNative或者前端经验的童鞋应该一眼可以看出。或者更适应这种布局方式。

使用ConstraintLayout去完成布局,经历短暂的不习惯后,上手后速度还是挺快的,

相比较RelativeLayout它有 可拖拽、可视化的优势,以及轻松完成一些RelativeLayout不太方便完成的布局。

还是推荐大家去使用它的。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

文末

面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值