logo头像

小玉的技术博客

安卓初级开发之适配不同的屏幕

使用“wrap_content”和“match_parent”

为了确保你的布局能灵活的适应不同的屏幕尺寸,针对一些view组件,你应该使用wrap_content和match_parent来设置他们的宽和高。如果你使用了wrap_content,view的宽和高会被设置为该view所包含的内容的大小值。如果是match_parent(在API 8之前是fill_parent)则会匹配该组件的父控件的大小。
通过使用wrap_content和match_parent尺寸值代替硬编码的尺寸,你的视图将分别只使用控件所需要的空间或者被拓展以填充所有有效的空间。

使用相对布局(RelativeLayout)

你可以使用LinearLayout以及wrap_content和match_parent组合来构建复杂的布局,但是LinearLayout却不允许你精准的控制它子view的关系,子view在LinearLayout中只能简单一个接一个的排成行。如果你需要你的子view不只是简简单单的排成行的排列,更好的方法是使用RelativeLayout,它允许你指定你布局中控件与控件之间的关系,比如,你可以指定一个子view在左边,另一个则在屏幕的右边。

使用尺寸限定词

(译者注:这里的限定词主要是指在编写布局文件时,将布局文件放在加上类似large,sw600dp等这样限定词的文件夹中,以此来告诉系统根据屏幕选择对应的布局文件,比如下面例子的layout-large文件夹)
从上一节的学习里程中,我们知道如何编写灵活的布局或者相对布局,它们都能通过拉伸或者填充控件来适应不同的屏幕,但是它们却不能为每个不同屏幕尺寸提供最好的用户体验。因此,你的应用不应该只是实现灵活的布局,同时也应该为不同的屏幕配置提供几种不同的布局方式。你可以通过配置限定(configuration qualifiers)来做这件事情,它能在运行时根据你当前设备的配置(比如不同的屏幕尺寸设计了不同的布局)来选择合适的布局资源。

ConstraintLayout

Constraintlayout是功能强大的新类,可以想象一个在类固醇上的Relativelayout——对,这就是Constraintlayout。它允许我们使用‘约束’放置子视图来定义基于布局中不同视图之间的相对关系的位置。
ConstraintLayout的目标是帮助减少嵌套视图的数量,这样可以改善布局文件的性能。布局类还使得我们更加轻松的定义布局,相比使用RelativeLayout时,因为我们现在可以固定一个视图的任意一边与另一的视图的任何边,而不必将整个视图防止到另一个的任何边。
例如,相对布局的属性允许我们放置视图:
layout_toRightOf
ayout_toLeftOf
layout_toTopOf
layout_toBottomOf
然而,ConstraintLayout用于更多的特性:
layout_constraintTop_toTopOf — 期望视图的上边对齐另一个视图的上边。
layout_constraintTop_toBottomOf — 期望视图的上边对齐另一个视图的底边。
layout_constraintTop_toLeftOf — 期望视图的上边对齐另一个视图的左边。
layout_constraintTop_toRightOf — 期望视图的上边对齐另一个视图的右边。
layout_constraintBottom_toTopOf — 期望视图的下边对齐另一个视图的上边。
layout_constraintBottom_toBottomOf — 期望视图的底边对齐另一个视图的底边。
layout_constraintBottom_toLeftOf — 期望视图的底边对齐另一个视图的左边。
layout_constraintBottom_toRightOf — 期望视图的底边对齐另一个视图的右边。
layout_constraintLeft_toTopOf — 期望视图的左边对齐另一个视图的上边。
layout_constraintLeft_toBottomOf — 期望视图的左边对齐另一个视图的底边。
layout_constraintLeft_toLeftOf — 期望视图的左边对齐另一个视图的左边。
layout_constraintLeft_toRightOf — 期望视图的左边对齐另一个视图的右边。
layout_constraintRight_toTopOf — 期望视图的右边对齐另一个视图的上边。
layout_constraintRight_toBottomOf — 期望视图的右边对齐另一个视图的底边。
layout_constraintRight_toLeftOf — 期望视图的右边对齐另一个视图的左边。
layout_constraintRight_toRightOf — 期望视图的右边对齐另一个视图的右边。
如果需要,属性支持开始和结尾也可用在左和右对齐。
唷,很多属性,对吧?这些属性对于ConstraintLayout内视图的位置,提供了巨大的控制力。

支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励