内容简介:上一篇:如果我们想在图像中显示自己喜欢的图像,肿么办呢? 这也不难,我们可以把电脑上的图像复制到工程的资源中,这样就可以在工程中使用它们了。你一定要注意:Android Studio 会很自作聪明的把属性编辑器中你刚刚编辑过的属性移到靠顶的位置,就是说这些属性在属性栏中乱跑!这到底是在帮忙还是捣乱?反正搞得我很不适应。
上一篇: Android9编程五:Layout资源
一、添加图像资源
如果我们想在图像中显示自己喜欢的图像,肿么办呢? 这也不难,我们可以把电脑上的图像复制到工程的资源中,这样就可以在工程中使用它们了。
做法是这样的:在你的文件浏览器中找一个图像文件(如果没有就从网上下载一个),最好是png格式的,jpg的也行,然后在文件浏览器中复制此文件(不要说你不知道怎么复制,按Ctrl+C或右键菜单中选“复制”),然后在你的工程中,在要放入的组上点右键,在右键菜单中选“Paste(粘贴)”即可。如下图:
图像必须放到“drawable”组中。drawable组中专门放可以绘制的资源,所以你不要放到其它组中。点了粘贴(Paste)之后出现如下对话框:
这个对话框给你一个修改文件名和文件存放位置的机会,存放位置没问题,不要动。资源名字你可以随便取,但要有意义,而且也不能用中文,不能以数字开头,字母不能大写,如果不符合这些要求,工程编译通不过。如果你英语不好就用拼音取名。如果你的资源文件名不符和要求,当你编译App时,就会看到错误,如下图:
在“Messages”这个窗口中,输出了编译中遇到的错误,可以看到这个错误最后给出的原因:“The resource name must start with a letter”,意思是资源的名字必须以字母开头。
二、文件或文件夹改名
如果这个资源已加入了工程,但是名字不合格,肿么办呢? 还是可以改名的!改名方式是这样的:在文件上点出右键菜单,选“Refactor(重构)”,再选“Rename(重名命)”,如下图:
一个窗口现身:
注意改名时不要改扩展名,改完后点“Refactor(重构)”即可。
既然已添加了自己的图像资源,那就把它显示出来吧? 预知后事如何,下节分解。
三、显示自己的图像
选中图像控件,打开属性栏:
在列出的属性中没有改变图像的项,不是没有,是隐藏了。默认下,属性栏中只显示少量常用的属性,要想看到全部属性,需要点箭头所指的链接“View all properties(查看所有属性)”,你会发现显示出了一大坨属性:
拖动滚动条,就可以看到所有属性。那么,哪个是改变所显图像的属性呢? 这个属性叫“srcCompat”,上图中可以看到,它的值是“@mipmap/ic_launcher”。这个以“@”开头的字符串叫表示的是一个ID,每个资源都有自己的ID,ID的名字就是这个资源的文件名。这里通过这个ID引用了一个图像资源。我们要改变显示的图像,可以为这个属性直接写入某个图片的ID,但是手写麻烦易出错,我们还是借助 工具 来设置吧,点下图所示按钮:
弹出了资源选择对话框:
这次选“Project”区中的female图像(我们刚加入的),点OK。现在图像控件变成了这样:
终于看到了这颗人头!
你一定要注意:Android Studio 会很自作聪明的把属性编辑器中你刚刚编辑过的属性移到靠顶的位置,就是说这些属性在属性栏中乱跑!这到底是在帮忙还是捣乱?反正搞得我很不适应。
运行起来看看真实的效果是什么样的吧?
此时,activity_main.xml这个文件的内容是这样的:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="niuedu.com.andfirststep.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ImageView android:id="@+id/imageView2" android:layout_width="200dp" android:layout_height="200dp" app:srcCompat="@drawable/female" tools:layout_editor_absoluteX="16dp" tools:layout_editor_absoluteY="16dp" /> </android.support.constraint.ConstraintLayout>
这些源码是怎么看到的呢? 看下图就明白了:
四、XML小解
界面设计文件的格式是XML。虽然我作此书时假设你已知道什么是XML,但是终究会有偶有初学者读此书,我还是把XML稍微解释一下。
XML是存储数据的一种格式,它只能以文本方式存数据,也就是说它存不了图片(也有办法存,但很麻烦,也不推荐这样做,所以你现在可以认为它只能存文本)。它的数据由元素组成,一条数据是一个元素,元素由标记来表示,标记即以“< >”包起来的文本。比如 : 就是一个元素,是元素的开始标记,是它的结束标记。如果一个元素不包含子元素,则为空元素。比如这里就是一个空元素。空元素可以把结束标记省略,写作: 。以下则表示有儿子和,还有孙子:
<aaa> <bbb> <ccc /> </bbb> <ddd /> </aaa>
一个元素除了可以有多个儿子,还可以有多个属性,如: ,eee就是的一个属性,等号前是属性的名字,等号后是属性的值。注意属性的值必须用单引号或双引号包起来。
注意!引号必须是半角字符!这是一个新手常掉进去的坑。
五、Layout源码解释
现在让我们逐条解释activity_main.xml文件中一些令人迷惑的代码。
- <?xml version="1.0" encoding="utf-8"?>
XML都这样开头,不要太在意。version表示版本是1.0,encoding表示编码是utf8,要想没乱码,你必须保证这个XML文件真的是utf8编码。
-
<android.support.constraint.ConstraintLayout xmlns:android=“ http://schemas.android.com/apk/res/android ”
xmlns:app=“ http://schemas.android.com/apk/res-auto ”
xmlns:tools=“ http://schemas.android.com/tools ”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=“niuedu.com.andfirststep.MainActivity”>
这是界面的最外层的元素,可以看到标记名是一个类(ConstraintLayout)的全名。如果这个类是Android SDK的核心库中的类,可以把包省略,只写类名。跟据类名我们就知道界面的最外面是一个ConstraintLayout控件。
此元素中有一些“xmlns”开头的属性,它为xml命名空间指定了别名,比如”android“、“app”和“tools”就是三个别名,要使用那个命名空间中定义的符号,必须在名字前带上命名空间的别名,比如:android:layout_width=“match_parent”,这个属性名layout_width就属于android这个别名所对应的命名空间中定义的符号,如果命名空间就没有引入,则不能使用。此时Android Studio会提示语法错误。比如,当我把xmlns:android=“ http://schemas.android.com/apk/res/android ” 这一条删掉之后,出现了下图所示的样子:
看到了吧? 所有的“android”变成了红色。
宽和高这两个属性必须存在,即:
android:layout_width="match_parent" android:layout_height="match_parent"
它们是控件的宽和高,这两个属性必须存在!“match_parent”的意思是匹配父控件,就是与父控件的大小一样。ConstraitLayout是最外面的控件,它的大小必须与Activity一样,也就充满整个屏幕,所以值必须为“match_parent”。(我们前面讲过了,宽和高的值可以有三种:match_parent、wrap_content和固定值)。
以“tools”为前缀的属性,仅在界面设计器中起作用。这些属性都是用于设计界面时指示界面设计器的行为的,在App运行时它们是不起作用。比如 tools:context=“niuedu.com.andfirststep.MainActivity” ,这是告诉界面设计器此Layout中定义的界面与MainActivity这个类关连,其实真正的关联是由 Java 代码决定的,可以与这里不一致而不影响运行。
- android:id="@+id/imageView2"
这个属性是为控件设置ID。ID是一个控件的唯一标志,此处的ID叫做“imageView2”。在一个Layout文件中的ID不能重复。“imageView2”是ID的名字,ID在App运行时其实是一个整数。如果一个控件要与另一个控件发生关系,那么就是通过ID来引用另一个控件。不仅控件要有ID,所有的资源都有ID,比如我们这个layout文件activity_main.xml,它的ID的名字就是文件名activity_main。
(摘自《Android9编程通俗演义》,京东淘宝及各大书店有售)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Opencv图像处理系列(六)—— 图像梯度
- opencv笔记(2):图像剪切和图像移位
- Opencv图像处理系列(九)—— 图像轮廓
- Python 图像处理 OpenCV (15):图像轮廓
- Opencv图像处理系列(三)——图像二值化
- Opencv图像处理系列(八)—— 图像金字塔
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
家事的撫慰(下冊)
Cheryl Mendelson / 甘錫安 / 大家出版社 / 2014-1-28 / NT$520
家事界暢銷參考書籍 各大媒體一致盛讚 亞馬遜讀者四星半高度評鑑 誠品、博客來、香港誠品 三選書 家務界經典暢銷書│各大媒體一致盛讚│讀者四星半高度評鑑 「這個世代最重要的家事著作!」──《大西洋月刊》 恢復家務打理者應有的地位,賦予應有的尊嚴和價值。 以生理的勞動、心力的投入,以及正確的持家知識,換得情感上的溫暖與安全。 .家裡空氣有異味,用香味來......一起来看看 《家事的撫慰(下冊)》 这本书的介绍吧!