概述
assets
raw、layout、menu、values等等
animator、color等等
android raw与assets区别
相同点:
1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
不同点:
1.由于raw是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源文件可以很容易的被Android的类和方法访问到,甚至在Android XML文件中你也可以以@raw/的形式引用到它。在Android中,使用ID是访问一个文件最快捷的方式。MP3和Ogg文件放在这个目录下是比较合适的。
2.assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目录下会使一些操作更加方便,比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的。
3.assets目录下可以新建目录,而res/raw目录则不可以。
//解析raw图片方式一:
Bitmap bitmap1 = BitmapFactory.decodeResource(this.getResources(), R.raw.ic_launcher_raw);
iv1.setImageBitmap(bitmap1);
bitmap1 = null;
//解析raw图片方式二:
InputStream is = this.getResources().openRawResource(R.raw.ic_launcher_raw);
Bitmap bitmap2 = BitmapFactory.decodeStream(is);
iv2.setImageBitmap(bitmap2);
bitmap2 = null;
//解析assets图片
AssetManager manager = this.getAssets();
try {
InputStream in = manager.open("ic_launcher_assets.png");//注意路径
Bitmap bitmap = BitmapFactory.decodeStream(in);
iv3.setImageBitmap(bitmap);
bitmap = null;
System.gc();
} catch (IOException e) {
e.printStackTrace();
}
//解析assets图片(子目录下)
try {
InputStream in = manager.open("childdir/ic_launcher_assets.png");//注意路径
Bitmap bitmap = BitmapFactory.decodeStream(in);
iv4.setImageBitmap(bitmap);
bitmap = null;
System.gc();
} catch (IOException e) {
e.printStackTrace();
}
如果raw建立子文件夹,如图,会报错:
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.io.FileNotFoundException:
> E:UserslenovoMyDrawBoardappsrcmainresrawchilddir (拒绝访问。)
最后
以上就是忐忑红酒为你收集整理的Android studio的文件创建android raw与assets区别的全部内容,希望文章能够帮你解决Android studio的文件创建android raw与assets区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复