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()

posted @ 2017-04-16 00:08  HeLing_CC  阅读(102)  评论(0)    收藏  举报