Android资源管理机制
在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子目录中。
res目录资源类别
res目录下包含各种子目录,存放了项目开发中所用到的所有的资源,具体如下:
- anim/:定义动画属性的xml文件。res/anim/目录,可以通过R.anim进Java中行访问。
- color/:定义颜色状态的xml文件。res/color/目录,可以通过R.color在Java中进行访问。
- drawable/:存放图片资源的目录。res/drawable/目录,可以通过R.drawable在Java中进行访问。
- layout/:存放布局资源的目录。res/layout/目录,可以通过R.layout在Java中进行访问。
- menu/:存放项目程序菜单的xml资源的目录。res/menu/目录,可以通过R.menu在Java中进行访问。
- raw/:该目录中用于存放一些原始文件,音频。res/raw/目录,可以通过R.raw在Java中进行使用,并通过调用Resource.openRawResource打开raw文件。
- values/:字符串、数组、布尔值,数值、尺寸、样式等相关的资源的xml文件存放的目录。res/values目录:
- 字符串:strings.xml文件表示字符串资源,R.string在Java类中使用
- 数组:arrays.xml文件表示数组资源,R.array在java中引用。
- 整数数值:integers.xml文件表示整数数值资源,通过R.integer在java中引用。
- 布尔值:bools.xml文件中存储布尔值资源,可以通过R.bool在java中引用。
- 尺寸值资源:dimens.xml文件存放项目中的尺寸值资源,可以通过R.dimen在java中引用。
- 样式:styles.xml文件存放项目开发中使用到的样式资源,可以通过R.style在Java中引用。
加载资源
在使用资源时首先要把资源加载到内存,需要用到Resources类。Resources类的作用主要就是加载资源,应用程序需要的所有资源(包括系统资源)都是通过此对象获取。一般情况下每个应用都会仅有一个Resources对象。
获取Resources对象
1、通过Context
上下文Context类内部包含有getResources()方法,通常情况下在Activity或者其他组件中调用。Context是一个抽象类,Android中Context的实现类是ContextImpl类。
2、通过PackageManager
可以通过context.getPackageManager()获取一个PackageManager对象。PackageManager这种方式主要是用来访问其他应用程序中的资源。
PackageManager pm = mContext.getPackageManager();
pm.getResourcesForApplication("com.xxx.packagename")//通过包名