约束布局ConstraintLayout加快布局速度

Android Studio2.2更新布局设计器,同时,引人了约束布局ConstraintLayout。

简单来说,可以把它看做是相对布局的升级版本,但是区别与相对布局更加强调约束。何为约束,即控件之间的关系。

它能让你的布局更加扁平化,一般来说一个界面一层就够了;同时借助于AS我们能极其简单的完成界面布局。

ConstraintLayout简介​

ConstraintLayout的优点非常突出。

ConstraintLayout不需要使用嵌套布局就可以让我们去构建一个大而复杂的布局, 他与RelativeLayout很相似,所有在里面的View的布局方式取决于View与View之间的关系和父布局。但是他比RelativeLayout 更灵活,并且在Android Studio’s Layout Editor中可以很容易的去使用。

ConstraintLayout的所有工作都可以使用布局编辑器的可视化工具中完成,因为布局API和布局编辑器对此专门构建的。因此你可以完全通过拖拽的方式去构建一个使用了ConstraintLayout 的布局,而不用直接在XML中编辑。

参考下图:

这个界面主要分成下面几个部分:

  • 左侧边栏,包括Palette组件库和Component Tree
  • 中间是布局设计器,包括两部分,左边是视图预览,右边是布局约束
  • 右侧边栏,上面是类似盒子模型的边界和大小布局设计器,下面是属性列表。

简单介绍完了约束布局的特色和开发界面,接下来来看看如何使用约束布局。

添加约束布局

使用约束布局,必须确保你拥有最新的约束布局的库。

  1. 点击Tools > Android > SDK Manager
  2. 点击SDK Tools Tab
  3. 展开Support Repository,然后勾选ConstraintLayout for Android 和Solver for ConstraintLayout。勾选Show Package Details,注意你下载的版本。
  4. 点击OK


添加ConstraintLayout库到你的build.gradle文件中,目前最新版本是beta4

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

你下载的这个库的版本可能会更高,确保与你之前下载的版本匹配即可。

使用约束布局

新建的项目,自动生成的布局默认不会使用ConstraintLayout,但是Android Studio提供了便捷的方式,可以直接转换成ConstraintLayout。

  1. 打开你的布局文件,切换到Design tab
  2. 在Component Tree窗体中,右击布局文件,然后点击Convert layout to ConstraintLayout(如下图)。

当然,
也可以新建一个新的约束布局。
新建一个布局文件

输入布局文件的名字,将布局的根元素改为
android.support.constraint.ConstraintLayout

最后点击完成

添加约束

拖一个View到布局编辑器中。当你添加了一个View到ConstraintLayout中,他的四个角对应着的四个小矩形框是控制大小的,每一条边有四个圆形的约束控制点。

这里主要包含几种类型的约束

  1. 尺寸大小
  2. 边界约束
  3. 基准线约束
  4. 约束到一个引导线(辅助线)

尺寸大小

尺寸约束使用的是『实心方块』,如图:


这个很好理解,就是调整组件的大小。

你可以使用View每个角的控制点去调整其大小,但是这样做只是把宽高写死,这样做不能适应不同的内容和不同的屏幕大小,我们应该避免这样去使用。为了选择一个动态的大小模式或者定义一个更具体的尺寸,请单击并打开编辑器右侧的Properties窗口,如下图。

灰色的矩形区域,代表选择的View,矩形的的符号代表宽和高。

  • (>>>)Wrap Content:View的大小与其内容适配
  • (有点像弹簧的图标)Any Size:View大小刚好匹配其对应的约束,他的实际值是0dp,表示这个View没有期望的尺寸,但是他渲染后的大小将会匹配其约束。
  • (直线)Fixed:View的大小的是固定的

点击符号即可在上面三种模式中互相切换。

注意:你不应该在ConstraintLayout中使用match_parent,而是使用0dp

边界约束

边界约束使用的是『空心圆圈』,如图:

边界约束,是使用最多的约束,它用于建立组件与组件之间、组件与Parent边界之间的约束关系,实际上,就是确定彼此的相对位置。

单击View选中,然后单击并按住一个约束控制点拖拽这条线到一个可用的锚点(其他View、Layout的边缘或者引导线),当你松开,这个约束将会被创建,两个View也将被默认的margin隔开。

为了确保左右的View都被均衡的隔开,点击工具栏的Margin 去为新添加进布局的View选择一个默认的margin值。

Button将会显示你当前选择的值,你做的更改将应用于之后你新添加的View。
你也可以通过点击Properties面板线上的数字去更改margin的值。

工具中提供的margin值全是8的倍数,帮助你的View与Material Design的推荐的8dp的方形网格保持一致

基准线约束

基准线约束,使用的是『空心圆角矩形』,如图:

基准线约束,是让两个带有文本属性的组件进行对齐的,可以让两个组件的文本按照基准线进行对齐。唯一要注意的是,你需要把鼠标放在控件上,等基准线约束的图形亮了,才可以进行拖动。

约束到一个引导线(辅助线)

你可以添加一个水平和垂直方向上的引导线,这可以当做你的附加约束。你在布局内可以定位这个引导线,dp和百分比作为单位均可。

想要创建这个引导线,在工具栏点击Guidelines(如下图),然后点击Add Vertical Guidelineo或者Add Horizontal Guideline即可。

拖动引导线中间的圆即可定位引导线的位置。

当你创建一个约束的时候,一定要记得下面几点规则:

  1. 每一个View必须有两个约束:一个水平的,一个垂直的。
  2. 只有约束控制点和另外一个锚点在同一平面才能创建约束(也就是说将要创建的约束的View和锚点View属于同一级)。因此一个View的垂直平面(左侧和右侧)只能被另一个的垂直平面约束,基线只能被其他基线约束。
  3. 一个约束控制点,只能被用来创建一次约束,但是可以在同一锚点创建多个约束(来自不同的View)

如果你想要删除一个约束,先选举中View,然后点击需要删除的约束控制点即可。

使用自动连接和约束推断

自动连接(Autoconnect) 为添加进布局的View自动创建两个或者多个约束,Autoconnect 默认被禁用,你可以通过点击编辑器工具栏中的Turn on Autoconnect(一个有点像磁铁的图片)开启他。

当你开启了Autoconnect,当你添加新的View到布局之后Autoconnect就会自动创建约束,他不会为已经存在的View创建约束。如果你拖动View一次,约束就值将会改变,但是之前的约束本身不会被改变。所以如果你想重新去定位View,那么你必须删除之前的约束。

或者,你可以点击Infer Constraints(一个有点像电灯的图标)去为布局中所有的View创建约束

Infer Constraints扫描整个布局为所有的View决定一套最有效的约束,因此他可以创建两个距离很远的View之间的约束。然而Autoconnect,只能为新添加进布局的View创建约束,并且他创建的约束仅仅只能是距离最近的元素。在这两种情况下,你可以随时通过点击约束控制点去删除约束然后创建新的约束去修改他。

快速对齐Align

工具栏中有个对齐图标,可以点击按钮直接让多个控件对齐。

最后,上面一些操作还可以通过右键点击控件找到。



更多精彩请关注微信公众账号likeDev

时间: 2024-08-04 03:40:00

约束布局ConstraintLayout加快布局速度的相关文章

五粮液筹建七大营销公司 加快布局区域市场

日前,五粮液董事会办公室相关负责人在某券商策略会上表示,公司营销改革所设立的七个营销中心,正争取在各区域并购1-2家当地白酒企业以销售五粮液基酒,类似河北永不分梨公司的模式. 筹建七大营销公司 一向以总代和大经销制为营销主体的五粮液正在寻求构建新的厂商关系. 近日,五粮液方面表示,公司今年已完成了营销改革,设立了七大营销中心,未来五粮液将在此基础上组建七大营销公司,具体运营各个区域的具体业务,将营销执行力.执行权进一步下放,提高市场反应速度. 五粮液官网显示,七大营销中心分别为华北.华东.华南.

百姓网获近1亿美金D轮融资,加快布局垂直领域

摘要: 今日,成立于2005年3月的国内分类信息网站 百姓网正式宣布总额近1亿美金的D轮融资,投资方暂不便透露.10年来,百姓网致力于提供分类广告服务,帮助用户免费查找和发布二手物品交 今日,成立于2005年3月的国内分类信息网站百姓网正式宣布总额近1亿美金的D轮融资,投资方暂不便透露.10年来,百姓网致力于提供分类广告服务,帮助用户免费查找和发布二手物品交易.二手车买卖.房屋租售.招聘求职.交友活动.宠物领养.生活服务等本地生活信息. 据百姓网提供的数据,截至2014年12月,百姓网月活跃用户

南北车连连收获海外订单布局海外加快发展

加速拓展海外市场增收 本报讯(记者索冬冬)经历了上半年营收和净利润双双下滑后,中国南车.中国北车继续加速拓展海外市场.昨日,中国北车称公司已与新西兰KiwiRail公司签署了8台内燃机车的销售合同:中国南车近日也宣布与马来西亚交通部签订10列60辆新型城际动车组增购项目订单. 国内订单相对有限 9月份,南北车"双寡头"分食了铁总首次铁路车辆招标.一家铁路设备制造商人士表示,预计第二轮铁路设备招标在年内开启,但现在国内市场的铁路设备订单还是相对有限,大家都在走出去,同时拓展新兴业务. 昨

我国加快布局云计算 10股逆势上扬

我国企业加快布局"位置云" 合众思壮近日在京发布了"位置云"相关的技术和平台.业内人士表示,"位置云"将带来更为智慧的政府决策.企业运营和个人生活. 国家测绘地理信息局相关负责人表示,合众思壮发布的"中国位置"平台适合中国国情,展示了我国导航定位综合服务的美好前景和地理信息产业发展的巨大潜力.国家测绘地理信息局将把推动产业发展作为一项重要战略任务,在政策支持.资源保障.市场监管.技术创新等方面加大工作力度,为地理信息企业加快发

IOS开发之绝对布局和相对布局(屏幕适配)

        之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下面会结合两个小demo来学习一下我们IOS开发中UI的绝对定位和相对定位.在前面的博客中所用到的UI事例用的全是绝对定位,用我们Storyboard拖拽出来的控件全是绝对定位的,就是我们可以同改变组件的frame来改变组件的位置和大小.而相对定位则不同,相对定位是参考组件周围的元素来

网页设计CSS网页布局:CSS网页布局的未来

文章简介:大家都知道,css有着奇妙的特性,然而让人失望的是,css对基本页面布局上的支持有所欠缺.但是这种情况正在得到改变,更多的动态页面正是由css所支持的,正如peter gasston所说的. 在这里,我能够保证在数年之后,css3必定能够引领潮流.一揽子的前端工具正在应运而生,方便为我们带来rounded corners圆角,gradients渐变,opacity透明度,transformations,transitions,animations,甚至更多效果.但是现在我们都有了fun

网页设计网页布局教程:CSS布局新属性

文章简介:新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 这篇文章最早出现在 the April 2012 issue (226)这期的.n

浅谈如何加快网站内页文章加快收录速度

对于草根站长而言自己网站在搜索引擎上面的表现是特别重要的,因为缺乏经济实力大家没有其他的途径去推广自己的网站提升流量,于是通过搜索引擎获取流量就是一种最常见的方式.在搜索引擎上面的表现大家一般在乎的是自己的关键词排名情况,网页收录速度等等,而一般情况下一个网站网页收入速度衡量一个网站的质量,因此大家也非常在乎这个收录的速度.于是我们经常看到一些站长"炫耀"说自己的的文章几分钟就被百度收录,甚至是秒收. 我想提到这个加快网站内页网站收录速度也许很多人都感兴趣,其实我想说的是其实对于我们草

嵌套DIV布局似乎与“布局结构与内容相分离”的原则冲突!

嵌套DIV布局似乎与"布局结构与内容相分离"的原则冲突! 为了合理实现XHTML+CSS格式的布局,似乎免不了在网页内容的HTML文件中写入嵌套的<div>标记,以实现那些常用的布局形式.比如:...<body> <div id="header">this is header</div> <div id="main"> <div id="navigater"&g