close
当前位置: 物联网在线 > 技术文库 > android >

Android新特性介绍,ConstraintLayout完全解析

今天给大家带来2017年的第一篇文章,这里先祝大家新年好。

本篇文章的主题是ConstraintLayout。其实ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能。我们都知道,在传统的Android开发当中,界面基本都是靠编写XML代码完成的,虽然Android Studio也支持可视化的方式来编写界面,但是操作起来并不方便,我也一直都不推荐使用可视化的方式来编写Android应用程序的界面。

而ConstraintLayout就是为了解决这一现状而出现的。它和传统编写界面的方式恰恰相反,ConstraintLayout非常适合使用可视化的方式来编写界面,但并不太适合使用XML的方式来进行编写。当然,可视化操作的背后仍然还是使用的XML代码来实现的,只不过这些代码是由Android Studio根据我们的操作自动生成的。

另外,ConstraintLayout还有一个优点,它可以有效地解决布局嵌套过多的问题。我们平时编写界面,复杂的布局总会伴随着多层的嵌套,而嵌套越多,程序的性能也就越差。ConstraintLayout则是使用约束的方式来指定各个控件的位置和关系的,它有点类似于RelativeLayout,但远比RelativeLayout要更强大。

其实ConstraintLayout属于Android Studio 2.2的新特性,我在去年写《第二行代码》的时候就非常想要将这部分内容加入到新书里面,但是在尝试之后还是放弃了。因为ConstraintLayout的用法很多都是对控件进行拖拽,只用文字或者是一些静态图片实在太难将它的用法表达清楚了,因此不太适合写到书上。我当时的想法就是在博客上面写一篇ConstraintLayout的用法讲解,来弥补一下《第二行代码》中缺失的这部分新特性,那么今天这篇文章来了。

开始

下面我们开始用边学边练的方式来进行学习,首先打开你的Android Studio,并新建一个ConstraintLayoutTest项目。另外,确保你的Android Studio是2.2或以上版本。

为了要使用ConstraintLayout,我们需要在app/build.gradle文件中添加ConstraintLayout的依赖,如下所示。

dependencies { compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4' }

目前ConstraintLayout库最新的版本是1.0.0-beta4,还没有推出正式稳定版本,不过这并不影响我们提前进行学习和使用。

现在打开res/layout/activity_main.xml文件,由于这是一个新建的空项目,Android Studio会自动帮我们创建好一个布局,如下图所示。

Android新特性介绍,ConstraintLayout完全解析

不过,Android Studio自动创建的这个布局默认使用的是RelativeLayout,我们可以通过如下操作将它转换成ConstraintLayout。

Android新特性介绍,ConstraintLayout完全解析

转换完成之后,原RelativeLayout中的内容也会自动转换到ConstraintLayout中,比如图中的TextView。如果你不需要它的话,可以选中这个控件,然后按键盘上的Delete键即可删除。

Android新特性介绍,ConstraintLayout完全解析

我们可以看到,现在主操作区域内有两个类似于手机屏幕的界面,左边的是预览界面,右边的是蓝图界面。这两部分都可以用于进行布局编辑工作,区别是左边部分主要用于预览最终的界面效果,右边部分主要用于观察界面内各个控件的约束情况。

基本操作

下面我们来学习一些具体的操作吧,ConstraintLayout的基本用法很简单,比如我们想要向布局中添加一个按钮,那么只需要从左侧的Palette区域拖一个Button进去就可以了,如下图所示。

Android新特性介绍,ConstraintLayout完全解析

虽说现在Button已经添加到界面上了,但是由于我们还没有给Button添加任何的约束,因此Button并不知道自己应该出现在什么位置。现在我们在预览界面上看到的Button位置并不是它最终运行后的实际位置,如果一个控件没有添加任何约束的话,它在运行之后会自动位于界面的左上角。

那么下面我们就来给Button添加约束,每个控件的约束都分为垂直和水平两类,一共可以在四个方向上给控件添加约束,如下图所示。

Android新特性介绍,ConstraintLayout完全解析

上图中Button的上下左右各有一个圆圈,这圆圈就是用来添加约束的,我们可以将约束添加到ConstraintLayout,也可以将约束添加到另一个控件。比如说,想让Button位于布局的右下角,就可以这样添加约束,如下图所示。

Android新特性介绍,ConstraintLayout完全解析


(责任编辑:ioter)

用户喜欢...

摆脱APP收入被Android逆袭的命运?苹果宣布App Store支持微信支付

APP营收即将被Android超越的苹果,和移动支付市场份额即将追上支付宝的腾讯,终于走到了一起...IT经理网...


人肉推荐才是王道:Google Play独立手游节发布Android游戏TOP20大名单

Google Play独立游戏节是大数据时代通过人工推荐来提高优秀APP曝光率和可视性的另外一个尝试。IT经理网...


Android O之后 一加3/3T再无重大系统升级

谷歌很快就将推出Android O了,相关细节也将在近期逐一浮出水面。而一加3以及一加3T也将会在今年年底之前迎来这一...


三星Note 8双摄特性曝光:N多好玩新功能

三星Note 8据称搭载6.3英寸18.5:9 AMOLED屏幕,骁龙835移动平台/三星Exynos 8895处理器(根据销售区域而定)、6GB RAM、330...


北美汽车电子与安全配置需求调查:用户最想要的是USB而不是CarPlay

2017年各大汽车厂商极力推行,并且装配大量新车型的CarPlay和Android Auto汽车数字娱乐系统,压根没有触及用户需求的“...


Android Things 入手,具体如何构建一个完整的智能家居系统

2012 年 6 月,由 IoT-GSI(Global Standards Initiative on Internet of Things)发布的白皮书ITU-T Y.4000/Y.2060[1]中明确定义了物联网的概念。从技术标准化的角度来讲,物联网可以看作是信息社会中,基于现有...


基于Unity3d 引擎的Android游戏优化

最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是上,试过几款手机,从低端到高端,发现...


捷德为DOCOMO提供eSIM管理解决方案

捷德宣布为日本领先移动网络运营商NTT DOCOMO提供eSIM管理解决方案,随即世界首款向消费者推出的采用嵌入式SIM(eS...


跻身Android Wear生态MIPS处理器圈地穿戴市场

Imagination近期不仅成为Google Android Wear作业系统生态圈中,唯一的处理器矽智财(IP)供应商,更与北京君正等处理器业者,合作推出穿戴式装置参考设计平台,因而让MIPS架构处理器顺利搭上And...


Android Wear之android穿戴式设备应用开发平台

Android Wear于2014年03月19日发布,并有Moto 360和LG watch两款产品。目前源码还没有开放,但是开发者可以下载它的Image及对应的开发SDK,这样开发者通过模拟器可以进行前期开发。其实,Android W...