Android程序中的资源指的是可以在代码中使用的外部文件,这些文件作为程序的一部分,被编译到程序中,它们被放置在res/目录下的各个子文件夹中。以下是Android的主要资源类型:
一、图片资源
Android中的图片资源包括扩展名为.jpg、.gif、.png等的文件,其中应用图标资源存放位置一般为res/mipmap,界面中使用的图片资源存放位置一般为res/drawable/。
根据设备屏幕密度的不同,Android会自动匹配不同文件夹中的图片资源。匹配规则如下:
| 密度范围/dpi | mipmap文件夹 | drawable文件夹 |
|---|---|---|
| (120,160] | mipmap_mdpi | drawable_mdpi |
| (160,240] | mipmap_hdpi | drawable_hdpi |
| (160,320] | mipmap_xdpi | drawable_xdpi |
| (320,480] | mipmap_xxdpi | drawable_xxdpi |
| (480,640] | mipmap_xxxdpi | drawable_xxxdpi |
如果想要调用表中两种文件夹中的图片资源,有以下两种调用方式:
(1)通过Java代码调用图片资源文件:
//调用mipmap文件夹中的图片资源文件
getResources().getDrawable(R.mipmap.ic_launcher);
//调用drawable文件夹中的图片资源文件
getResources().getDrawable(R.drawable.icon);
(2)在XML布局文件中调用图片资源文件:
@mipmap/ic_launcher //调用mipmap文件夹中的图片资源文件
@drawable/icon //调用drawable文件夹中的图片资源文件
二、主题和样式资源
Android中的主题和样式主要用于为界面元素定义显示 风格,它们的定义方式比较类似。
1.主题
主题资源定义位置存放在res/values/styles.xml。设置主题有以下两种方式:
(1)在AndroidMainfest.xml文件中设置主题
<application
......
android:theme ="@style/AppTheme">
</application>
(2)在Java代码中设置主题
setTheme(R.style.AppTheme);
2.样式
引入样式有以下两种方式:
(1)在XML布局文件,如res/layout/activity_main.xml中引用样式。
(2)也在Java代码中引入样式。
// 为TextView应用styles.xml中定义的样式
textView.setTextAppearance(this, R.style.MyBoldTextStyle);
三、布局资源
布局资源通常用于搭建程序中的各个界面,这些布局资源文件一般存放于res/layout文件夹中。
在程序中调用布局资源文件,有以下两种调用方式:
通过java代码调用布局资源文件。
在XML布局文件中调用布局资源文件。
常见的四种界面布局有以下四种:
| 布局 | 特点 |
|---|---|
| 线性布局 | 以水平或垂直方向排列 |
| 相对布局 | 通过相对定位排列 |
| 帧布局 | 开辟空白区域,帧里的控件(层)叠加 |
| 表格布局 | 表格形式排列 |
四、字符串资源
字符串是使用频率非常高的一种资源,每一款应用基本上都会用到一些字符串作为文本提示信息或者标题文字等。我们可以在目录res/values/string.xml文件中定义字符串。
在程序中调用字符串资源文件,有以下两种调用方式:
(1)通过java代码调用字符串资源文件。
getResources().getString(R.string.app_name);
(2)在XML布局文件中调用字符串资源文件。
@string/app_name
五、颜色资源
在Android程序中,开发者通常会使用颜色资源来改变控件的颜色。颜色资源通常定义在res/values/dimens.xml文件中,如果程序中没有dimens.xml文件,可自行创建。通常用<color></color>标签用于定义颜色资源。
在程序中调用颜色资源文件,有以下两种调用方式:
(1)通过java代码调用颜色资源文件。
getResources().getColor(R.color.colorPrimary);
(2)在XML布局文件中调用颜色资源文件。
@color/colorPrimary
六、尺寸资源
在Android界面中,View控件的宽度、高度和View控件的间距值是通过尺寸资源设置的。尺寸资源通常定义在res/values/dimens.xml文件中,如果程序中没有dimens.xml文件,可自行创建。
在程序中调用尺寸资源文件,有以下两种调用方式:
(1)通过java代码调用尺寸资源文件。
getResources().getDimension(R.dimen.activity_horizontal_margin);
(2)在XML布局文件中调用尺寸资源文件。
@dimen/activity_horizontal_margin