Android开发 - 掌握ConstraintLayout(一)传统布局的问题 1
在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面。随着ConstraintLayout的推出,这种现象有了很大的改善,而且它可以实现很多传统布局难以实现的功能。
本系列我们就一起来学习ConstraintLayout的使用,来大幅提高我们的生产力。
传统布局
在ConstraintLayout退出之前,我们经常使用FrameLayout, LinearLayout, RelativeLayout, *Layout等来布局页面。这些布局当然有其方便的地方,但是其方便地同时也限制了我们的使用场景,在写一些复杂页面的时候就显得力不从心,我们先做一下简单地回顾:
- FrameLayout:帧布局。最常用并且简单的布局,通常用于错误页面的显示,蒙层的显示等。
- LinearLayout:线性布局。当我们绘制需要顺序排列的内容时,我们使用使用此布局。
- RelativeLayout:相对布局。相当于ConstraintLayout的低级版本。顾名思义,可以各个View之间相对地指定位置进行布局。
- ...
存在的问题
以上布局并不是完美的,比如我们要布局这个页面:
我们如果使用传统的布局,可能会导致布局的层级多层嵌套:
<RelativeLayout><ImageView/><ImageView/><RelativeLayout><TextView/><LinearLayout><TextView/><RelativeLayout><EditText/></RelativeLayout></LinearLayout>...</RelativeLayout>...
</RelativeLayout>
- 布局复杂
使用传统的布局虽然可以实现我们的需求,但是在代码实现中有非常多的嵌套,而且要结合许多布局的特性来实现,这样复杂的布局让我们难以维护。 - 效率底下
当布局层级越深的时候,系统的绘制效率越低,当子View.invalidate()的时候,也会导致其父View进行重新绘制。
又比如这些布局中相对灵活的RelativeLayout,它会被测量至少两次,已确定最终渲染时的位置,也同样会影响效率。
- 难以创建复杂动画
Android在属性动画(ObjectAnimator)推出之前,执行动画的原理其实只是在绘制的时候执行,并不是真正的改变了布局,在属性推出之后,虽然确实可以改变其真实的布局属性,但是由于布局特性的约束以及各个View之间的约束,创建复杂的动画也并非易事。
ConstraintLayout登场!
下面我们进入本系列的主角:ConstraintLayout!
使用ConstraintLayout可以解决以上传统布局存在的种种问题,而且Android Studio也提供了强大而且简单易用的编辑器,使用它可以让我们的开发效率大大增加。
下一篇我们将介绍它:Android开发 - 使用ConstraintLayout(二)介绍
如有更多疑问,请参考我的其它Android相关博客:我的博客地址
Android开发 - 掌握ConstraintLayout(一)传统布局的问题 1相关推荐
- Android开发 - 掌握ConstraintLayout(一)传统布局的问题
在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面.随着 ...
- Android开发 - 掌握ConstraintLayout(四)创建基本约束
上一篇我们介绍了编辑器的基本使用,本文我们介绍创建基本的约束. "约束"表示View之间的位置关系.当我们在ConstraintLayout布局中创建View时,如果我们没有添加任 ...
- Android开发 - 掌握ConstraintLayout(七)辅助线(Guideline)
了解过UI设计的同学都知道,在设计的时候,我们经常在界面上拖进一些辅助线来帮我们对齐UI元素,或者方便我们统一的页边距. 在ConstraintLayout的编辑器中,同样也支持这样的功能,我们可以创 ...
- Android开发 - 掌握ConstraintLayout(六)链条(Chains)
本文我们介绍链条(Chains),使用它可以将多个View连接起来,互相约束. 可以创建横向的链条,也可以创建纵向的链条,我们以横向的链条举例: 我们先创建三个按钮: 我们选中三个按钮后在上面点右键创 ...
- android 线性布局蒙层,Android开发 - 掌握ConstraintLayout(一)传统布局的问题
在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面.随着 ...
- android.复杂动画实现,Android开发 - 掌握ConstraintLayout(十一)复杂动画!如此简单!...
介绍 本系列我们已经介绍了ConstraintLayout的基本用法.学习到这里,相信你已经熟悉ConstraintLayout的基本使用了,如果你对它的用法还不了解,建议您先阅读我之前的文章. 使用 ...
- 安卓前端布局Android,Android开发的几种常见布局
目前正在从事iOS开发,对于安卓就是大学的时候自学了点,做过几个小的项目,软件外包大赛.计算机设计大赛.移动应用大赛都拿过奖项,呵呵...现在回想起来以前大学做的安卓比赛是多么的幼稚. 从现在开始我要 ...
- Android 开发(02)UI布局方式
一.View 和 ViewGroup 1.View View:所有可视化控件的父类,提供组件描绘和事件处理方法 常用的属性:id.background.padding等 2.ViewGroup Vie ...
- Android开发之详解五大布局
为了适应各式各样的界面风格,Android系统提供了5种布局,这5种布局分别是: LinearLayout(线性布局) TableLayout(表格布局) RelativeLayout(相对布局) A ...
- Android开发学习之卡片式布局的简单实现
GoogleNow是Android4.1全新推出的一款应用,它可以全面了解你的使用习惯,并为你提供现在或者未来可能用到的各种信息,GoogleNow提供的信息关联度较高,几乎是瞬间返回答案,总而言之, ...
最新文章
- catboost是什么?相对于xgboost以及lightgbm有什么优势?如何使用randomSearchCV和Catboost进行组合获取最优参数组合?
- 官网拉取fuchsia代码
- Apache Cordova for ios环境配置
- Kitten编程猫 里的克隆体无法进行边缘检测
- MODIS NDVI数据处理相关问题
- 离散数学计算机科学丛书答案,计算机《离散数学》期中试卷答案.docx
- IOS开发之MVC模式的介绍
- SAP License:SAP中的默认帐户与密码应用
- python docx 表格打印不显示_python-docx 设置 word 文档中表格格式
- sm4 前后端 加密_7 个开源的 Spring Boot 前后端分离优质项目
- 快逸报表之在IE打印问题
- 2018-2019-1 20165318 20165322 20165326 实验二 固件程序设计
- 常用的前端还款计算器(包括按月等额本息、按四月等额本息、到期还本付息、到期还本按月付息四种还款方式)
- linux vi面板如何复制一行
- linux 的tac命令,每天学一个 Linux 命令(102):tac
- 一、	WIN32程序
- 基于RNN的序列化推荐系统总结
- JAVA容器,什么叫JAVA容器?
- 贪吃蛇小游戏(代码)
- UVA11183 Teen Girl Squad —— 最小树形图
热门文章
- linux编译后 空间不足,Linux系统/run/systemd空间不足问题解决
- 官宣 | 千呼万唤,Apache Flink 1.11.0 正式发布啦!(内含福利)
- Flink Batch SQL 1.10 实践
- Apache Flink 进阶(五):数据类型和序列化
- b+树时间复杂度_几分钟学会Java实现图的最小生成树:Kruskal算法
- 2021年江苏省高考成绩什么时候可以查询,2021年江苏高考成绩什么时候出来 成绩查询时间...
- postgis java_Postgresql结合postgis使用java的JDBC连接
- mysql 两条数据相减_mysql 实现相邻两条数据相减
- 单网卡同时上内外网_Win10双网卡上网冲突(内网、外网)
- ad20如何画出pcb板大小_PCB板过孔对高频信号传输的影响,一定要重视