跳转至

Android 的资源库

Android 的资源库存储着 APP 的本地资源,包括布局文件、图片、音频、字符串、颜色等内容,这些资源使用 XML 语法编写,被存储在项目文件的 res 目录下,在 APP 运行时可以被调用。

布局文件

布局文件一般被存储在 layout 目录下,你需要使用多种 Layout 将对应的部分插入到界面对应的位置并使用各种各样的 View 单独或嵌套在 Layout 内作为页面展示的元素。下面是一个示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="90dp"
    android:orientation="vertical"
    android:paddingLeft="12dp"
    android:paddingRight="12dp">

    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="#F8F8F8" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="10dp"
        android:paddingBottom="10dp">

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2">

            <TextView
                android:id="@+id/news_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginTop="-3dp"
                android:ellipsize="end"
                android:maxLines="2"
                android:text="@string/news_title"
                android:textColor="#222222"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/news_desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="@string/news_author"
                android:textColor="#BFBFBF"
                android:textSize="10sp"
                tools:ignore="SmallSp" />
        </RelativeLayout>

        <ImageView
            android:id="@+id/news_image"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:scaleType="fitXY"
            android:src="@drawable/news_image"
            android:layout_marginStart="20dp" />

    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="#F8F8F8" />
</LinearLayout>

得到的布局如下图,如你所见,前后两个 View 是上下占位边框,中间的部分是一组横向线性排列,权重为 2:1;左边是两个文本框组成的,右边是一张图片。布局文件的编写还是比较直观的,更多地需要在实践中提高使用的熟练度,这里不再赘述。

几点关于布局文件的 tip

  1. 布局文件只能有一个根元素。
  2. 上图可视化布局文件的工具是 Android Studio 的布局编辑器,你也可以在布局编辑器中直接添加元素并调整相关参数,任何更改 Android Studio 都会帮你写入布局文件内,不过直接对布局文件进行修改是更推荐的做法。

其他资源类型

除了布局文件以外,Android 还有很多类型的资源,比如颜色列表状态资源,它一般存储在 values 目录下的 colors.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="purple_200">#FFBB86FC</color>
    <color name="purple_500">#FF6200EE</color>
    <color name="purple_700">#FF3700B3</color>
    <color name="teal_200">#FF03DAC5</color>
    <color name="teal_700">#FF018786</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="customBlue">#66CCFF</color>
    <color name="customGreen">#39C5BB</color>
    <color name="customGrey">#787a7a</color>
    <color name="customWhite">#FAFAFA</color>
</resources>

还有菜单资源,一般存储在 menu 目录下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:title="主页"
        android:id="@+id/home"
        android:icon="@drawable/ic_home_black_24dp"/>
    <item
        android:title="搜索"
        android:id="@+id/search"
        android:icon="@android:drawable/ic_menu_search"/>
    <item
        android:title="记录"
        android:id="@+id/history"
        android:icon="@android:drawable/ic_menu_recent_history"/>
</menu>

Android 还有更多种资源类型,这里一一介绍并不现实,想要了解更多的可以跳转 资源类型简介

评论

作者: Andonade