android studio開發 android res和asset等特殊文件夾

創建方法:NEW----Folder----Res Folder


轉載:自其他人博客,原文出處不知道在哪。


*res/raw和assets的相同點:

1.兩者目錄下的文件在打包後會原封不動的保存在apk包中,不會被編譯成二進制。


*res/raw和assets的不同點:
1.res/raw中的文件會被映射到R.java文件中,訪問的時候直接使用資源ID即R.id.filename;assets文件夾下的文件不會被映射到R.java中,訪問的時候需要AssetManager類。
2.res/raw不可以有目錄結構,而assets則可以有目錄結構,也就是assets目錄下可以再建立文件夾

*讀取文件資源:

1.讀取res/raw下的文件資源,通過以下方式獲取輸入流來進行寫操作

  • InputStream is = getResources().openRawResource(R.id.filename); 

2.讀取assets下的文件資源,通過以下方式獲取輸入流來進行寫操作

  • AssetManager am =null
  • am = getAssets(); 
  • InputStream is = am.open("filename"); 

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開發指南中文版內容):

目錄Directory

資源類型Resource Types

res/anim/

XML文件,它們被編譯進逐幀動畫(frame by frame animation)或補間動畫(tweened animation)對象

res/drawable/

.png.9.png.jpg文件,它們被編譯進以下的Drawable資源子類型中:

要獲得這種類型的一個資源,可以使用Resource.getDrawable(id)

位圖文件

9-patches(可變尺寸的位圖)

爲了獲取資源類型,使用mContext.getResources().getDrawable(R.drawable.imageId)

注意:放在這裏的圖像資源可能會被aapt工具自動地進行無損壓縮優化。比如,一個真彩色但並不需要256色的PNG可能會被轉換爲一個帶調色板的8PNG。這使得同等質量的圖片佔用更少的資源。所以我們得意識到這些放在該目錄下的二進制圖像在生成時可能會發生變化。如果你想讀取一個圖像位流並轉換成一個位圖(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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章