少年意气强不羁,虎胁插翼白日飞。这篇文章主要讲述Android开发 - 掌握ConstraintLayout传统布局的问题相关的知识,希望能为你提供帮助。
在传统的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可以解决以上传统布局存在的种种问题,而且Android Studio也提供了强大而且简单易用的编辑器,使用它可以让我们的开发效率大大增加。
下一篇我们将介绍它:Android开发 - 使用ConstraintLayout(二)介绍
本文地址,如有更多疑问,请参考我的其它Android相关博客:我的博客地址
推荐阅读
- 安卓网页title为空显示url地址
- 做信用卡智能代还APP必须了解的几点
- Android学习--Assets资源文件读取及AssetManager介绍
- cordova 和 java ( JDK ) 和 android-studio (SDK)的初始安装和配置
- create-react-app 构建的项目使用 mobx
- 安卓本卓Android系统源码篇之源码结构
- pandas中apply和transform方法的性能比较
- Tableau折线图
- Tableau条形图用法图解