Android工程的assets和res/raw目录解析

来源:互联网 发布:python 函数定义 编辑:程序博客网 时间:2024/06/07 07:17

     在安卓工程目录下面经常会有assets和res/raw这两个文件目录,而且我们都知道在这两个文件夹中存放的资源一般不要大于1M;

     这两个文件目录里的文件都会直接在打包apk的时候直接打包到apk中,携带在应用里面供应用访问,而且不会被编译成二进制;

     他们的不同点在于:1、assets中的文件资源不会映射到R中,而res中的文件都会映射到R中,所以raw文件夹下的资源都有对应的ID;2、assets可以能有更深的目录结构,而res/raw里面只能有一层目录;3、资源存取方式不同,assets中利用AssetsManager,而res/raw直接利用getResource(),openRawResource(R.raw.fileName),很多人认为是R.id.filename,其实正确的是R.raw.filename,就像R.drawable.filename一样,整体表示一个ID值,并非是R.id.filename;

    示例代码如下:

    1、res/raw:

                StringBuilder sb = new StringBuilder();                InputStream in = null;                in = getResources().openRawResource(R.raw.introduction);                if (in != null) {                    InputStreamReader isr = new InputStreamReader(in);                    BufferedReader br = new BufferedReader(isr);                    char [] buf = new char[1024];                    int len = 0;                    while ((len = br.read(buf)) > 0) {                        sb.append(buf, 0, len);                    }                } else {                    Log.e(TAG, "Read introduction file error");                    return;                }

    2、assets:

AssetManager assetManager = getAssets();//获取AssetManagerInputStream in = assetManager.open(fileName);

     


阅读全文
0 0
原创粉丝点击