導讀
- 移動開發知識體系總章(Java基礎、Android、Flutter)
- assets目錄與res目錄的區別
assets目錄與res目錄的區別
assets | res/raw | res/drawable | |
---|---|---|---|
獲取資源方式 | 文件路徑+文件名 | R.raw.xxx | R.drawable.xxx |
是否被壓縮 | NO | NO | YES(失真壓縮) |
能否獲取子目錄資源 | YES | NO | NO |
- res會在R.java生成索引ID,在打包的時候判斷資源有沒有用到,沒用到的時候不會被打包進apk中(res/raw文件夾除外),而assets不會。
- res用getResource()訪問,assets用AssetsManager訪問。
- res/raw與assets里的文件在打包的時候都不會被系統二進制編譯,都被原封不動打包進APK,通常用來存放游戲資源、腳本、字體文件等。但res/raw不可以創建子文件夾,而assets可以。
- res/xml會被編譯成二進制文件。res/anim存放動畫資源。
assets:用于存放需要打包到應用程序的靜態文件,以便部署到設備中。與res/raw不同點在于,assets支持任意深度的子目錄。這些文件不會生成任何資源ID,必須使用/assets開始(不包含它)的相對路徑名。
res:用于存放應用程序的資源(如圖標、GUI布局等),將被打包到編譯后的Java中。不支持深度子目錄.
在android開發中,我們離不開資源文件的使用,從drawable到string,再到layout,這些資源都為我們的開發提供了極大的便利。
資源文件
/res/drawable
存放布局文件
/res/layout
存放動畫資源
/res/anim
存放基于XML的菜單描述
res/menu
存放通用的文件, 該文件夾內的文件將不會被編譯成二進制文件,按原樣復制到設備上。
res/raw
存放字符串、尺寸值
res/values
存放通用的XML文件
res/xml