48

Android9编程五:Layout资源

 5 years ago
source link: https://blog.csdn.net/niu_gao/article/details/89597253?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

什么是Layout

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

Android中的UI定义文件是一个XML文件,由于它不是Java代码,所以它被归为资源。Layout资源放在哪里呢? 看下图:

FzauQrr.png!web

可以看到res/layout组下当前只有一个文件:activity_main.xml,就是它定义了我们所能看到的界面。它是我们创建这个APP时被自动添加的,我们也可以手动添加它。双击打开它,可以看到如下画面(注意第一次显示UI的过程可能比较长,请耐心等待):

N3UjuqQ.png!web

这里展示的是界面设计器。在这个窗口中可以通过拖动一些控件摆放它们的位置来设计App的页面。标号所示区域作用如下:

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

可以看到标号5处是一个手机页面的预览图。这个layout文件定义了一个页面的界面,一个页面叫做Activity。但是,在预览时你也有可能不幸看到的是这样的画面:

F7nANbI.png!web

预览不成功。Rendering Problems的意思是“呈现时的问题”,就是呈现UI时遇到了问题。要解决这个问题,一般重新编译重个工程即可。如下操作:

JFRNva7.png!web

当Make完之后,就能看到UI的样子。

改动Layout

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

首先看一下AndroidStudio的界面设计器中为我们提供了哪些可用的控件:

EJZFZvf.png!web

控件的类别有:

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

要显示图像,应该去Common或Widgets组中去找控件。如下图:

U32eemE.png!web

选择“ImageView(图像视图)”这个控件,然后把它拖到了预览页面的内容区。当你放开鼠标时,Android Studio就会打开一个窗口,让你选择要在这个图像控件中显示的图像(第一次运行可能要等很长很长时间):

ayIj6nn.png!web

最左边为类别,有“Drawable”和“Color”,分别表示图像和和颜色。你要选择“Drawable”,右边显示的都是可用的图像资源(就是图片文件)。这些Drawable资源又被分为“Project”和“Android”两组,Project表示我们工程中带的资源,android表示Andriod SDK中带的资源。随你便,选什么都行,比如我选Project中的第一个:ic_launcher,点OK后就可以看到预览界面中多了一个图像:

vqArUvA.png!web

图像有点小,你可能想把这个图像调大一点,怎么做呢? 图像控件默认是以显示的图像的真实大小来决定自身的大小,也就是控件适应图像,但也可以反过来,让图像适应控件,此时我们应该为图像控件指定固定的大小,然后让图像跟据图像控件自动缩放。要做到此效果,只需要修改图像控件的“layout_width”(宽度)和“layout_height”(高度)属性。要想修改控件属性,需打开属性栏,见下图:

Y3QRNba.png!web

红箭头所指就是属性栏开关,点它打开属性栏,如下图:

7Z7jAfA.png!web

红框内就是属性栏,你可能看到的内容跟我的不一样,是因为你当前选中的控件跟我的不一样,当你在预览窗口或控件树中选中图像控件,就看到跟我一样的内容了。

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

yEFFJrY.png!web

看到了吧? 图像被我们搞大了!

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK