asset與res、raw的不同
assets:用于存放需要打包到應用程式的靜态檔案,以便部署到裝置中。assets支援任意深度的子目錄。在編譯的時候不會編譯assets下的資源檔案,且這些檔案不會生成任何資源ID。
res:用于存放應用程式的資源(如圖示、GUI布局等)
raw:存放通用的檔案, 該檔案夾内的檔案将不會被編譯成二進制檔案,按原樣複制到裝置上。
通路assets目錄下的資源檔案
可以通過AssetManager類來通路assets目錄下的資源檔案。
獲得AssetManager執行個體的方法:
Context.getAssets()
getResources().getAssets()
通路asset檔案夾下的檔案(比如文本、圖檔,不能是檔案夾):
Context.getAssets().open(“sample.txt”)
WebView加載assets下的html檔案:
WebView.loadUrl(“file:///android_asset/sample.html”);
使用assets目錄下的圖檔資源:
InputStream is=getAssets().open("Image/sample.jpg");
Bitmap bitmap=BitmapFactory.decodeStream(is);
imgShow.setImageBitmap(bitmap);
播放assets目錄下的音樂
//openFd(String fileName)方法根據檔案名來擷取原始資源對應的AssetFileDescriptor資源描述
AssetFileDescriptor afd = am.openFd(music);
mPlayer.reset();
// 使用MediaPlayer加載指定的聲音檔案。
//getStartOffset():傳回asset中項的資料位元組開始偏移
//getLength():傳回該asset中項的資料的總位元組數。
mPlayer.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
// 準備聲音
mPlayer.prepare();
// 播放
mPlayer.start();