本文主要是介绍Android studio的文件创建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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:\Users\lenovo\MyDrawBoard\app\src\main\res\raw\childdir (拒绝访问。)
这篇关于Android studio的文件创建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!