assets/资源

QuibblerQuibbler 2020-02-06 约 7 分钟 1845 次阅读

assets资源

Android的资源文件一般放在res/文件夹下,这些会被编译,我们可以直接通过R.java去引用这些资源文件。

        res/drawable               图片

        res/values/string         字符串

        res/values/colors        颜色

        res/values/dimens      尺寸

        res/values/arrays         数组

        res/values/attrs           自定义View属性declare-styleable

        res/values/styles         自定义样式style

        res/raw                        音频

但是一些复杂,较大的数据就不能被Android系统识别或者html页面等不能放在上面的那些res/目录下。而要存放在另一个资源文件夹assets/中,一般工程不会为我们创建这个目录,如果需要存放一些资源文件,需要手动创建,将资源放到这个目录下。

1、AssetManager

这个目录下的文件既然不能被编译,就无法通过R.的形式访问,需要另一个工具AssetManager资产管理器

AssetManager assetManager = context.getAssets();

常用方法:

String[] list(String path)                            列出指定目录下的文件与文件夹列表数组

InputStream open(String fileName)         打开指定assets文件夹下的文件

assetManager.close();                               Close this asset manager

2、读取字符串

public static String getStringFromAsset(Context context, String fileName) {
        String str = "";
        AssetManager assetManager = context.getAssets();
        try {
            InputStream inputStream = assetManager.open(fileName);
            int length = inputStream.available();
            byte[] buffer = new byte[length];
            inputStream.read(buffer);
            str = new String(buffer, StandardCharsets.UTF_8);
        } catch (IOException e) {
            Log.e(TAG, e.toString());
        }
        Log.d(TAG, str);
        return str;
    }

3、读图片

public static Bitmap getImageFromAsset(Context context, String fileName) {
        Bitmap bitmap = null;
        try {
            InputStream in = context.getAssets().open(fileName);
            bitmap = BitmapFactory.decodeStream(in);
        } catch (IOException e) {
            Log.e(TAG, e.toString());
        }
        return bitmap;
    }

更多资料:

         Android资源管理框架(Asset Manager)简要介绍

         Android AssetManager

相关推荐