1.二者目錄下的文件在打包後會原封不動的保存在apk包中,不會被編譯成二進制。html
*res/raw和assets的不一樣點:
1.res/raw中的文件會被映射到R.java文件中,訪問的時候直接使用資源ID即R.id.filename;assets文件夾下的文件不會被映射到R.java中,訪問的時候須要AssetManager類。
2.res/raw不能夠有目錄結構,而assets則能夠有目錄結構,也就是assets目錄下能夠再創建文件夾java
*讀取文件資源:android
1.讀取res/raw下的文件資源,經過如下方式獲取輸入流來進行寫操做數組
2.讀取assets下的文件資源,經過如下方式獲取輸入流來進行寫操做ide
assets文件夾裏面的文件都是保持原始的文件格式,須要用AssetManager以字節流的形式讀取文件。
1. 先在Activity裏面調用getAssets()來獲取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode)方法則指定讀取的文件以及訪問模式就能獲得輸入流InputStream。
3. 而後就是用已經open file 的inputStream讀取文件,讀取完成後記得inputStream.close()。
4.調用AssetManager.close()關閉AssetManager。工具
附帶佈局
res文件夾裏面的多個文件夾的各自介紹(來自網上的Android開發指南中文版內容):post
目錄Directory優化 |
資源類型Resource Types動畫 |
res/anim/ |
XML文件,它們被編譯進逐幀動畫(frame by frame animation)或補間動畫(tweened animation)對象 |
res/drawable/ |
.png、.9.png、.jpg文件,它們被編譯進如下的Drawable資源子類型中: 要得到這種類型的一個資源,可使用Resource.getDrawable(id) 爲了獲取資源類型,使用mContext.getResources().getDrawable(R.drawable.imageId) 注意:放在這裏的圖像資源可能會被aapt工具自動地進行無損壓縮優化。好比,一個真彩色但並不須要256色的PNG可能會被轉換爲一個帶調色板的8位PNG。這使得同等質量的圖片佔用更少的資源。因此咱們得意識到這些放在該目錄下的二進制圖像在生成時可能會發生變化。若是你想讀取一個圖像位流並轉換成一個位圖(bitmap),請把圖像文件放在res/raw/目錄下,這樣能夠避免被自動優化。 |
res/layout/ |
被編譯爲屏幕布局(或屏幕的一部分)的XML文件。參見佈局聲明(Declaring Layout) |
res/values/ |
能夠被編譯成不少種類型的資源的XML文件。 注意: 不像其餘的res/文件夾,它能夠保存任意數量的文件,這些文件保存了要建立資源的描述,而不是資源自己。XML元素類型控制這些資源應該放在R類的什麼地方。 儘管這個文件夾裏的文件能夠任意命名,不過下面使一些比較典型的文件(文件命名的慣例是將元素類型包含在該名稱之中): array.xml 定義數組 colors.xml 定義color drawable和顏色的字符串值(color string values)。使用Resource.getDrawable()和Resources.getColor()分別得到這些資源。 dimens.xml定義尺寸值(dimension value)。使用Resources.getDimension()得到這些資源。 strings.xml定義字符串(string)值。使用Resources.getString()或者Resources.getText()獲取這些資源。getText()會保留在UI字符串上應用的豐富的文本樣式。 styles.xml 定義樣式(style)對象。 |
res/xml/ |
任意的XML文件,在運行時能夠經過調用Resources.getXML()讀取。 |
res/raw/ |
直接複製到設備中的任意文件。它們無需編譯,添加到你的應用程序編譯產生的壓縮文件中。要使用這些資源,能夠調用Resources.openRawResource(),參數是資源的ID,即R.raw.somefilename。 |