Android res/drawable、res/raw、/assets 资源文件区别及获取

文件放在res/drawable、res/raw、/assets下的区别

/res 下的文件是受android系统约束的,1、放在这个文件夹下,会被映射生成R文件,即访问时通过R.xx.xxx;2、只能有一层目录,再往底层建文件夹就访问不到了;3、打包时自动只打包用的上的文件,没用上的文件不打包;获取输入流的方式:InputStream in = getResources().openRawResource(R.raw.filename);

/assets 下的文件是不受Android的约束的,1、文件放在这个文件夹里,无论是否在项目中用到,会被原封不动的打包到APK; 2、由于没有生成R文件,只能通过路径+文件名(或单独文件名)访问;3、可建立多层次的文件夹(但一般没有这个必要) 获取输入流的方式:InputStream in = getAssets().open(“filename”);

res下的raw和其他文件夹的区别:

raw中的图片不会被压缩

drawable中的图片会被压缩

Android openRawResource()不适用于drawable

InputStream is = (InputStream) getResources().openRawResource(R.drawable.image1);

报错:可绘制文件(R.drawable.image1)的错误“原始类型的预期资源”。 image1是一个png,位于res / drawable文件夹中。
解决(3种方法)

  1. 将其放在res / raw文件夹中
  2. 将其保存在drawable文件夹中,然后将drawable转换为InputStream
  3. is = context.getResources().openRawResource(+ R.drawable.image1); 该 + 显示其他文件夹

参考:文件放在res/drawable、res/raw、/assets下的区别
Android openRawResource()不适用于drawable

猜你喜欢

转载自blog.csdn.net/qq_35008279/article/details/86614816
今日推荐