上一篇:Android9编程四:虚拟机加速

什么是Layout

Layout的意思是界面布局,靠它来设计界面的布局,所以layout类型的资源文件就是界面定义文件。使用Android Studio提供的界面构建器设计Layout,可以做到所见即所得。

Android中的UI定义文件是一个XML文件,由于它不是Java代码,所以它被归为资源。Layout资源放在哪里呢? 看下图:
在这里插入图片描述
可以看到res/layout组下当前只有一个文件:activity_main.xml,就是它定义了我们所能看到的界面。它是我们创建这个APP时被自动添加的,我们也可以手动添加它。双击打开它,可以看到如下画面(注意第一次显示UI的过程可能比较长,请耐心等待):
在这里插入图片描述
这里展示的是界面设计器。在这个窗口中可以通过拖动一些控件摆放它们的位置来设计App的页面。标号所示区域作用如下:

  1. 控件类别;
  2. 选中类别的控件列表;
  3. 所设计的页面中的控件树;
  4. 切换页面设计器视图,可选择设计视图或源码视图,Desgin是设计,就是当前看到的,Text是源码,就是此页面所对应的XML的内容;
  5. 页面预览图。注意可能与App实际运行效果有些许差异;
  6. 页面排版预览图。突出显示各控件之间的摆放位置和它们之间的位置关系;
  7. 此图标有下拉菜单,用于选择如何预览界面,有三种模式:同时显示预览图与排版图、只显示排版图,只显示预览图;

可以看到标号5处是一个手机页面的预览图。这个layout文件定义了一个页面的界面,一个页面叫做Activity。但是,在预览时你也有可能不幸看到的是这样的画面:
在这里插入图片描述
预览不成功。Rendering Problems的意思是“呈现时的问题”,就是呈现UI时遇到了问题。要解决这个问题,一般重新编译重个工程即可。如下操作:
在这里插入图片描述
当Make完之后,就能看到UI的样子。

改动Layout

让我们改一下这个Layout,显示一个图片吧。

首先看一下AndroidStudio的界面设计器中为我们提供了哪些可用的控件:
在这里插入图片描述
控件的类别有:

  • Common:一些最常用的控件;
  • Text:文本显示控件和各种文本输入控件,它们都不能容纳孩子;
  • Buttons:各种按钮;
  • Wedgets:包含各种不好分类的控件,它们的共同特点是不能容纳孩子。
  • Layouts:专门用于排版的控件们,它们是容器,专用于容纳孩子们,按某种规则排列它的孩子们。
  • Containers:容器,与Layout,专门于用容纳孩子们,支持内容滚动,孩子们的排列方式固定,不能更改。
  • Google:Google为Android提供的第三方控件,比如Google的广告控件,Google地图控件。
  • Legacy:旧控件们,有了新的替代控件。
  • Project:我们在项目中自定义的控件们。

要显示图像,应该去Common或Widgets组中去找控件。如下图:
在这里插入图片描述
选择“ImageView(图像视图)”这个控件,然后把它拖到了预览页面的内容区。当你放开鼠标时,Android Studio就会打开一个窗口,让你选择要在这个图像控件中显示的图像(第一次运行可能要等很长很长时间):
在这里插入图片描述
最左边为类别,有“Drawable”和“Color”,分别表示图像和和颜色。你要选择“Drawable”,右边显示的都是可用的图像资源(就是图片文件)。这些Drawable资源又被分为“Project”和“Android”两组,Project表示我们工程中带的资源,android表示Andriod SDK中带的资源。随你便,选什么都行,比如我选Project中的第一个:ic_launcher,点OK后就可以看到预览界面中多了一个图像:
在这里插入图片描述
图像有点小,你可能想把这个图像调大一点,怎么做呢? 图像控件默认是以显示的图像的真实大小来决定自身的大小,也就是控件适应图像,但也可以反过来,让图像适应控件,此时我们应该为图像控件指定固定的大小,然后让图像跟据图像控件自动缩放。要做到此效果,只需要修改图像控件的“layout_width”(宽度)和“layout_height”(高度)属性。要想修改控件属性,需打开属性栏,见下图:
在这里插入图片描述
红箭头所指就是属性栏开关,点它打开属性栏,如下图:
在这里插入图片描述
红框内就是属性栏,你可能看到的内容跟我的不一样,是因为你当前选中的控件跟我的不一样,当你在预览窗口或控件树中选中图像控件,就看到跟我一样的内容了。

可以看到当前layout_width和layout_height的值都是“wrap_content(包着内容)”,所以控件的大小由其内容(就是图像)决定。现在让我们把这两个值改为固定的大小,比如宽和高都改为“200dp”,效果如下图:
在这里插入图片描述
看到了吧? 图像被我们搞大了!

有人可能注意到了表示距离的数字后要带“dp”,是的,必须带它,它是一个距离单位,表示的是实际的物理距离,与像素大小无关。

注意!!
属性栏中显示的属性是随着你选择的控件而变化的,你可以点“Hello World!”这个文本控件试试,是不是显示的属性变了? 所以你在编辑属性之前要先确定点的是哪个控件,因为经常发生点错的情况。
要知后事如何,下次分解。

(摘自《Android9编程通俗演义》,京东淘宝及各大书店有售)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐