Asset与raw、drawable区别
2020-05-15 本文已影响0人
卡路fly
assets | res/raw | res/drawable | |
---|---|---|---|
获取资源方式 | 路径+文件名 | R.raw.xxx | R.drawable.xxx |
是否被压缩 | NO | NO | YES(失真压缩) |
能否获取子目录资源 | YES | NO | NO |
raw与assets比较
- 相同点
两者目录下的文件在打包后会原封不动的保存在apk中,不会被编译成二进制。 - 不同点
raw: Android会自动为目录所有制源文件生成一个ID。使用ID访问速度快
assets:不会生成ID,只能通过AssetManager访问,xml中不能访问,访问速度慢,操作方便。目录下可以再建文件夹。
读取文件资源
res/raw
InputStream is = getResource().openRawResource(R.id.filename);
assets
private Bitmap getImageFromAssetsFile(String filename) {
Bitmap bitmap = null;
AssetManager manager = getResources().getAssets();
try {
InputStream is = manager.open(filename);
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
注意:
- AssetManager不能处理超过1MB文件,会报异常。
- assets文件夹下存放不进行编译加工的原声文件,即该文件夹里面文件不会像xml、JAVA文件被预编译,可以存放一些图片、html、js、css等。