项目中欢迎页背景为视频,就視频文件到底放在哪个地方这一问题跟同事观点有些不合,查阅相关资料在此记录。
网上关于assets和rests和raw的资料确实都千篇一律了看我这篇摘录或者下面这两篇差不多了
assets和rests和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,现在无此限制具体查看这篇文章)两个文件夾下的文件都会被原封不动的打包到APK中应用使用。而不会像其它资源文件那样被编译成二进制的形式(不管放在哪个文件夹下apk的大小是鈈变的)
2.res/raw不可以有目录结构,而assets和rests则可以有目录结构也就是assets和rests目录下可以再建立文件夹
有人可能会有疑问,既然它们都是被原封不动的拷贝到APK中而assets和rests可以创建目录结构,又能够动态的列出assets和rests中的所有资源getassets和rests().list(String path);这些raw都做不到,那raw还有什么用呢
下面我们来说说它们主要的區别:
由于raw是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID这个ID会被存储在R类当中,作为一个文件的引用这意味着这个资源文件可以很容易的被Android的类和方法访问到,甚至在Android
XML文件中你也可以@raw/的形式引用到它在Android中,使用ID是访问一个文件最快捷的方式MP3和Ogg文件放茬这个目录下是比较合适的。
assets和rests目录更像一个附录类型的目录Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与Android中的一些类和方法兼容度更低同时,由于你需要一个字符串路径来获取这个目录下的文件描述符访问的速度会更慢。但是把一些文件放在这个目录下會使一些操作更加方便比方说拷贝一个数据库文件到系统内存中。要注意的是你无法在Android XML文件中引用到assets和rests目录下的文件,只能通过assets和restManager来訪问这些文件数据库文件和游戏数据等放在这个目录下是比较合适的。