Android编程权威指南(第二版)第十八章-Assets
Android资源系统(resources system)可以用来打包应用所需的图片、XML文件以及其他非Java资源。这里会介绍另外一种资源打包方式:assets.
assets可以被看作随应用打包的微型文件系统,支持任意层次的文件目录结构。因为这个优点,类似游戏这样需要加载大量图片和声音资源的应用通常都会使用它。
第一步 创建assets目录。右键单击app模块,选择New →Folder →Assets Folder菜单项,清除Change Folder Location选项,保持Target Source Set的main选项不变,单击Finish按钮完成。然后可以在assets目录右键选择new->Directory,创建新的文件夹,添加资源文件。
第二步 处理assets。一般我们可以创建一个资源管理类***Box来对资源进行管理。
public class ***Box {
private static final String TAG = "***Box"; //用于日志记录
private static final String FOLDER_NAME = "Folder_Name";
private AssetManager mAssets;//访问资源的管理器,需要从Context中获取它
public BeatBox(Context context) {
mAssets = context.getAssets();
load***s();
}
private void load***s() {
String[] fileNames;
try {
fileNames= mAssets.list(FOLDER_NAME ); //返回文件夹下的所有带格式的文件名称
} catch (IOException ioe) {
Log.e(TAG, "Could not list assets", ioe);
return;
}
}
}
可以通过fileNames列表对每个资源进行处理(新建一个文件类***,保存文件的路径,提取名称)
第三步 访问Assets的资源。尝试使用File对象打开资源文件是行不通的;正确的方式是使用AssetManager:
String assetPath = ***.getAssetPath(); //单个文件的带路径的名称
InputStream soundData = mAssets.open(assetPath);//得到标准的InputStream数据流
//如果需要FileDescriptor,改调用openFd()

浙公网安备 33010602011771号