Android之資源打包方式——Assets

Android資源系統(tǒng)(resources system)可以用來打包應用所需的圖片眠菇、XML文件以及其他非Java資源磺陡,這里來學習下另一種資源打包方式:assets沼本。

resources資源可以存儲聲音文件,比如在res/raw目錄可以保存xxx.wav文件薪捍,然后使用R.raw.xxx來獲取它笼痹。然而配喳,《Android編程權威指南》中的事例BeatBox項目,涉及到了20個多不同聲音文件處理凳干,若使用Android資源系統(tǒng)一個個處理晴裹,效率就會很低,這個時候救赐,assets就派上用場了涧团,assets可以被看作隨應用打包的微型文件系統(tǒng),支持任意層次的文件目錄結構经磅,因為這個優(yōu)點泌绣,類似游戲這樣需要加載大量圖片和聲音資源的應用通常都會使用它。下面來學習怎么讀取assets資源预厌。這里的Demo就不用書上同樣的了阿迈,為了學習assets,就自己隨意寫了個Demo配乓。

首先導入assets(創(chuàng)建assets目錄仿滔,我用AS新建一個項目,貌似是沒有自動生成assets文件夾的犹芹,因此崎页,郵件單擊app模塊,New->Folder->Assets Folder)

Demo截圖
跳出下圖腰埂,然后finish
Demo截圖
項目就出現(xiàn)了assets
Demo截圖
右鍵單擊assets目錄飒焦,這里可以將文件直接放入assets目錄下,也可以再建立一個文件夾屿笼,統(tǒng)一管理牺荠。我們這里建立example文件夾,放入幾個txt文件
Demo截圖

    private static final String TAG = "AssetDemoActivity";
    private static final String EXAMPLE_FOLDER = "example";
    private AssetManager mAssets;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_asset_demo);
        mAssets = this.getAssets();
        try {
            String[] examples = mAssets.list(EXAMPLE_FOLDER);
            Log.i(TAG, "ALL:" + examples.length);
            for (String example: examples){
                Log.i(TAG, "Name:" + example);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

打印結果:
Demo截圖

assets目錄中的所有文件都會隨應用打包驴一。訪問assets需要用到AssetManager類休雌,可以從Context中獲取它,通常肝断,在訪問assets時杈曲,可以不用關心究竟使用哪個Context對象,實際開發(fā)中胸懈,所有Context中的AssetManager管理的都是同一套assets資源担扑。AssetsManager.list(String)方法能列出指定目錄中的所有文件名。

當然要得到assets中資源的內容趣钱,就要用到文件讀取的技術了涌献,首先要得到資源文件的路徑嘍,上述Demo得到路徑的方式:

String assetPath = EXAMPLE_FOLDER + "/" + example;
InputStream assetData = mAssets.open(assetPath);

得到標準的InputStrem數(shù)據流首有,然后燕垃,就該怎么用就怎么用啦枢劝,有的API可能還會需要FileDescriptor。改調用AssetManager.openFd(String)方法就可以了卜壕。

深入理解:什么是non-assets
AssetManager類還有openNonAssetFd(...)這樣的方法呈野。Android有assets和resources兩大資源系統(tǒng)。resources資源系統(tǒng)設計有良好的檢索系機制印叁,但它無法應付圖形和聲音文件這樣的大文件。這些資源實際是保存在assets系統(tǒng)里的军掂。在后臺轮蜕,Android就是使用openNonAsset方法來打開這些資源。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蝗锥,一起剝皮案震驚了整個濱河市跃洛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌终议,老刑警劉巖汇竭,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異穴张,居然都是意外死亡细燎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門皂甘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玻驻,“玉大人,你說我怎么就攤上這事偿枕¤邓玻” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵渐夸,是天一觀的道長嗤锉。 經常有香客問我,道長墓塌,這世上最難降的妖魔是什么瘟忱? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮桃纯,結果婚禮上酷誓,老公的妹妹穿的比我還像新娘。我一直安慰自己态坦,他們只是感情好盐数,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伞梯,像睡著了一般玫氢。 火紅的嫁衣襯著肌膚如雪帚屉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天漾峡,我揣著相機與錄音攻旦,去河邊找鬼。 笑死生逸,一個胖子當著我的面吹牛牢屋,可吹牛的內容都是我干的。 我是一名探鬼主播槽袄,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼烙无,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遍尺?” 一聲冷哼從身側響起截酷,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乾戏,沒想到半個月后迂苛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡鼓择,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年三幻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呐能。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赌髓,死狀恐怖,靈堂內的尸體忽然破棺而出催跪,到底是詐尸還是另有隱情锁蠕,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布懊蒸,位于F島的核電站荣倾,受9級特大地震影響,放射性物質發(fā)生泄漏骑丸。R本人自食惡果不足惜舌仍,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望通危。 院中可真熱鬧铸豁,春花似錦、人聲如沸菊碟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至头镊,卻和暖如春蚣驼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背相艇。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工颖杏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坛芽。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓留储,卻偏偏與公主長得像,于是被迫代替她去往敵國和親咙轩。 傳聞我的和親對象是個殘疾皇子欲鹏,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容

  • Android與資源管理相關的類Resouces和AssetManager很有必要清楚他們的創(chuàng)建過程。 與資源查找...
    小爨閱讀 3,165評論 4 14
  • Assets資源 assets/和res/raw目錄 相同之處 兩者目錄下的文件在打包后會原封不動的保存在apk包...
    獅_子歌歌閱讀 16,540評論 1 10
  • Android提供了一種非常靈活的資源系統(tǒng)臭墨,可以根據不同的條件提供可替代資源。因此膘盖,系統(tǒng)基于很少的改造就能支持新特...
    Gooooood閱讀 12,752評論 5 25
  • 一生都不會停止畫畫胧弛。 不為名氣不為利益,只是單純的熱愛侠畔。 喜歡去哪都帶一本速寫本一支筆结缚,放進大大單肩包里。 關于藝...
    DAI雨惜閱讀 244評論 0 4
  • 來源:教育科學學院 19預文一班陸琴 相信自己是一種信念软棺,它不是繁花如夢似錦红竭,卻又如青松雪壓不倒。自信能讓自己有無...
    教科院團總支學生閱讀 120評論 0 0