Android中的asserts和res/raw資源目錄
1、assets目錄
assets目錄下稱為原生檔案,無法通過R資源清單類訪問,這類檔案在被打包成apk檔案時是不會進行壓縮的;
(1)使用方法
AssetManager assets = this.getResources().getAssets();
((TextView)findViewById(R.id.txAssets)).setText(
readStream(assets.open("data.txt"))
);
在context上下文中,呼叫getAssets返回一個AssetManager物件,然後使用open方法就可以訪問需要的資源了,這裡open方法是以assets目錄為根的。
assets目錄更像一個附錄型別的目錄,Android不會為這個目錄中的檔案生成ID並儲存在R類當中,因此它與Android中的一些類和方法相容度更低。同時,由於你需要一個字串路徑來獲取這個目錄下的檔案描述符,訪問的速度會更慢。但是把一些檔案放在這個目錄下會使一些操作更加方便,比方說拷貝一個數據庫檔案到系統記憶體中。要注意的是,你無法在Android XML檔案中引用到assets目錄下的檔案,只能通過AssetManager來訪問這些檔案。資料庫檔案和遊戲資料等放在這個目錄下是比較合適的。這個目錄中的檔案也不會被編譯成二進位制形式,可以自建目錄。
2、res目錄
res目錄下這類檔案在打包成apk檔案時,可通過R資源清單類訪問,會進行小記憶體優化。
res/raw目錄這裡的檔案會原封不動的儲存到裝置上,不會被編譯為二進位制形式,訪問的方式通過R類。由於raw是Resources (res)的子目錄,Android會自動的為這目錄中的所有資原始檔生成一個ID,這個ID會被儲存在R類當中,作為一個檔案的引用。這意味著這個資原始檔可以很容易的被Android的類和方法訪問到,甚至在Android XML檔案中你也可以@raw/的形式引用到它。在Android中,使用ID是訪問一個檔案最快捷的方式。MP3和Ogg檔案放在這個目錄下是比較合適的。不可以有目錄結構。
(1)使用方法
InputStream is =getResources().openRawResource(R.id.filename);
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
int i = is.read();
while(i != -1) {
bo.write(i);
i = is.read();
}
return bo.toString();
} catch (IOException e) {
return "";
}
通過openRawResource(R.id.filename);方法獲取一個指定id的輸入流.
還有一些其他資料夾:
res/anim:這裡存放的是動畫資源。
res/xml:可以在Activity中使用getResource().getXML()讀取這裡的資原始檔,但是XML會被編譯成二機制檔案。
相關推薦
Android中的asserts和res/raw資源目錄
1、assets目錄 assets目錄下稱為原生檔案,無法通過R資源清單類訪問,這類檔案在被打包成apk檔案時是不會進行壓縮的; (1)使用方法 AssetManager assets = this.getResources().getAssets
android開發如何獲取res/raw和assets資料夾的路徑:
1.如果你只是拷貝動作,那麼你只需要得到res/raw和assets檔案輸入流就可以,方法如下: 獲取res/raw檔案輸入流: InputStream is=getResources().
Android中getDrawable和getColor過時的替代方法
this logs con 知識 log launcher 16px ase spa 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 前言 Android SDK 升級到 23 之後,getDrawable和getColor方法提示過時。 解決方案 getRe
Android中 Bitmap和Drawable相互轉換的方法
canvas board null height .com factory oar tool pla 1、Drawable --> Bitmap [java] view plain copy Bitmap drawable2Bitmap(Drawabl
Android中Gallery和ImageSwitcher同步自動(滾動)播放圖片庫
目標 art trac repl otto fin instance img com 本文主要內容是如何讓Gallery和ImageSwitcher控件能夠同步自動播放圖片集 ,看起來較難,然而,實現的方法非常簡單, 請跟我慢慢來。總的來說,本文要實現的效果如下圖:(截
Android中RelativeLayout和LinearLayout性能分析
ant 顯示 二次 iou other comm 排列 vertica 簡單的 先看一些現象吧:用eclipse或者Android studio,新建一個Activity自動生成的布局文件都是RelativeLayout,或許你會認為這是IDE的默認設置問題,其實不然,
Android中Service和IntentService的差別
前言: ServiceTimeout(20 seconds)小概率型別Service在特定的時間內無法處理完成,會造成ANR — 應用程式無響應(ANR:Application Not Responding)的情況 ▲ 分析 : 避免ANR最核心的一點就是在主執行緒減少耗時操作。這時我們
Android中Serializable和Parcelable序列化物件詳解
學習內容: 1.序列化的目的 2.Android中序列化的兩種方式 3.Parcelable與Serializable的效能比較 4.Android中如何使用Parcelable進行序列化操作 5.Parcelable的工作原理 6.相關例項 1.序列化
Android 中src和background的區別
XML屬性中src和background的區別: src會存放原圖的大小,background會根據view的大小拉伸整張圖片。src是前景而background是背景。 可以使用scaleType屬性設定src(只對src起作用)的縮放方式。 詳細的scaleType說明: CEN
Android中activity和xml的第一個專案
我們使用的手機不光是隻用到一個應用程式,比如在淘寶介面要付款的時候可能會啟動微信付款等,這就相當於在淘寶的Activity中啟動了微信的Activity。還比如說當我們註冊一個網站是,可能會給自己傳送一條簡訊作為驗證,這就是在當前的Activity中啟動了簡訊的Activity。之前對比的MVC設
Android中Paint和Canvas的簡單使用
在 Android 中,Canvas 相當於畫布,而 Paint 相當於畫筆;那麼這兩個配合使用就可以畫出來我們想要的形狀了。 首先我們新建一個類,名字叫 MyView,重寫 onDraw() 方法,程式碼如下: @SuppressLint("AppCompatCustomView") pu
android中 IMEI和ICCID的校驗位計算
我們都知道在android 中有IMEI和ICCID 這兩項資料. 至於這兩項資料的獲取方式以及所表示的意思在此我就不寫了.主要講講這兩項資料最後一位的校驗位如何計算的. IMEI共1
Android-0.Android中minsdkversion和targetSdkVersion的選擇
問題 在呼叫系統播放mp4時,程式碼如下: private void viewMediaFile(String path) { if (!TextUtils.isEmpty(path)) { String type =
android中stagefright和OMXCodec原理分析
1. 框架結構 1.1StageFright和openCore和NuPlayer的關係 上圖可知,stagefright是在MediaPlayerService這一層加入的,和opencZ喎�"/kf/ware/vc/" target="_blank" class=
Android中Bitmap和Drawable相互轉換
一、相關概念 1、Drawable就是一個可畫的物件,其可能是一張點陣圖(BitmapDrawable),也可能是一個圖形(ShapeDrawable),還有可能是一個圖層(LayerDrawable),我們根據畫圖的需求,建立相應的可畫物件 2、Canvas畫布,繪圖的
Android中Density和Pixel的關係對介面顯示的影響
眾所周知,Android中的Density為分四種,分別是120dpi,160dpi,240dpi,320dpi,對應工程中的資料夾分別為drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi。同一張圖片的尺
Android中如何修改編譯的資源ID值(預設值是0x7F...可以隨意改成0x02~0x7E)
一、技術準備今天我們來看一下如何修改Android中編譯時的資源Id的值,在講解這內容之前,我們需要先了解一下Android中的資源編譯之後的結構和編譯過程,這裡就不多說了,具體可以檢視這篇文章:這篇文章中,介紹瞭如何解析Android中編譯之後的resource.arsc檔
【Android】android中Invalidate和postInvalidate的區別
Android中實現view的更新有兩組方法,一組是invalidate,另一組是postInvalidate,其中前者是在UI執行緒自身中使用,而後者在非UI執行緒中使用。 Android提供了Invalidate方法實現介面重新整理,但是Invalidate不能直接線上程中呼叫,因為他是違背了單執行緒模型
Android中Okhttp和SPDY協議
HTTP的一個問題在於每個連線一次只允許一個請求和響應,這就讓瀏覽器或者其他客戶端為了並行請求必須生成多個套接字(socket)連線。對客戶端來說,這不算什麼大問題,但是對伺服器來說情況就不一樣了
android 中 Canvas和Paint
相關連結: ---------------正文---------------- Canvas類主要實現了螢幕的繪製過程,其中包含了很多實用的方法,比如繪製一條路徑、區域、貼圖、畫點、畫線、渲染文字,下面是Canvas類常用的方法: void drawRect(RectF rect, Pai