Android资源使用

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")//通过包名