第一行代码:Android(2nd ed)(14):开始启程——你的第一行 Android 代码 1.3.5

阅读数:21 2019 年 10 月 19 日 13:27

第一行代码:Android(2nd ed)(14):开始启程——你的第一行Android代码 1.3.5

(创建你的第一个 Android 项目:详解项目中的资源)

如果你展开 res 目录看一下,其实里面的东西还是挺多的,很容易让人看得眼花缭乱,如图 1.30 所示。

第一行代码:Android(2nd ed)(14):开始启程——你的第一行Android代码 1.3.5

图 1.30 res 目录下的结构

看到这么多的文件夹也不用害怕,其实归纳一下,res 目录就变得非常简单了。所有以 drawable 开头的文件夹都是用来放图片的,所有以 mipmap 开头的文件夹都是用来放应用图标的,所有以 values 开头的文件夹都是用来放字符串、样式、颜色等配置的,layout 文件夹是用来放布局文件的。怎么样,是不是突然感觉清晰了很多?

之所以有这么多 mipmap 开头的文件夹,其实主要是为了让程序能够更好地兼容各种设备。drawable 文件夹也是相同的道理,虽然 Android Studio 没有帮我们自动生成,但是我们应该自己创建 drawable-hdpi、drawable-xhdpi、drawable-xxhdpi 等文件夹。在制作程序的时候最好能够给同一张图片提供几个不同分辨率的版本,分别放在这些文件夹下,然后当程序运行的时候,会自动根据当前运行设备分辨率的高低选择加载哪个文件夹下的图片。当然这只是理想情况,更多的时候美工只会提供给我们一份图片,这时你就把所有图片都放在 drawable-xxhdpi 文件夹下就好了。

知道了 res 目录下每个文件夹的含义,我们再来看一下如何去使用这些资源吧。打开 res/ values/strings.xml 文件,内容如下所示:

复制代码
<resources>
<string name="app_name">HelloWorld</string>
</resources>

可以看到,这里定义了一个应用程序名的字符串,我们有以下两种方式来引用它。

  • 在代码中通过R.string.app_name可以获得该字符串的引用。

  • 在 XML 中通过@string/app_name可以获得该字符串的引用。

基本的语法就是上面这两种方式,其中string部分是可以替换的,如果是引用的图片资源就可以替换成drawable,如果是引用的应用图标就可以替换成mipmap,如果是引用的布局文件就可以替换成layout,以此类推。

下面举一个简单的例子来帮助你理解,打开 AndroidManifest.xml 文件,找到如下代码:

复制代码
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>

其中,HelloWorld 项目的应用图标就是通过android:icon属性来指定的,应用的名称则是通过android:label属性指定的。可以看到,这里对资源引用的方式正是我们刚刚学过的在 XML 中引用资源的语法。

经过本小节的学习,如果你想修改应用的图标或者名称,相信已经知道该怎么办了吧。

评论

发布