編輯:關於android開發
Android開發者有些文件比如音頻,視頻,.html,.mp3等等這些文件不希望編譯器編譯而保持原始原貌打包進apk文件(這在游戲開發中很常見和普遍,如游戲用到的游戲音樂、圖等資源),那麼可以使用Android在res目錄下的res/raw和assets來保存。res/raw和assets目錄下的文件將不被Android編譯成二進制,Android將這些文件資源保持原狀原封不動的打包進最終編譯發布時候的apk文件。
res/raw和res/assets和既有相同點也有不同點。
(1)res/raw目錄下的文件將被Android映射成R.id.xxx資源,訪問該raw目錄下的文件資源,可以通過R.id.filename獲得映射,進而文件操作。但res/assets則不是這樣,res/assets目錄下的文件不會進行R.id. filename這樣的映射,res/assets目錄下的文件存放和訪問模型與Java文件系統的讀寫模型類似。
(2)assets目錄下的文件結構可以出現層級和樹形結構;而res/raw則不能分層級。換句話說,可以在assets建立多層級、樹形的文件目錄結構,而res/raw下的文件資源必須平鋪放在res/raw目錄下。
(3)文件大小方面。在res/raw目錄下的單個文件大小可以大到若干MB的尺寸,但res/assets文件目錄下的單個文件大小尺寸盡量控制在MB量級以下,否則可能要出問題。
(4)res/assets目錄下的文件資源訪問一般是這樣(如附錄文章1所示):
AssetManager am=getAssets();
InputStream is=am.open("filename");
即通過AssetManager訪問res/assets目錄下資源。
res/raw目錄下的文件資源訪問一般是這樣:
InputStream is =getResources().openRawResource(R.id.filename);
res/raw目錄下的文件資源也可以通過這樣先獲得URI定位:
Uri uri= Uri.parse("android.resource://"+getPackageName()+"/"+ R.raw.filename);
1 package com.lixu.rawduxie;
2
3 import java.io.BufferedInputStream;
4
5 import java.io.ByteArrayOutputStream;
6 import java.io.IOException;
7 import java.io.InputStream;
8 import android.app.Activity;
9 import android.os.Bundle;
10 import android.widget.Toast;
11
12 public class MainActivity extends Activity {
13
14 @Override
15 protected void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.activity_main);
18
19 readraw();
20 }
21
22 private void readraw() {
23 // 從raw文件讀取文件的字節流
24 InputStream is = getResources().openRawResource(R.raw.lixutxt);
25
26 try {
27 byte[] buffer = readByteFromInputstream(is);
28 String s = new String(buffer, 0, buffer.length, "UTF-8");
29 Toast.makeText(getApplicationContext(), s, 0).show();
30
31 } catch (IOException e) {
32 e.printStackTrace();
33 }
34
35 }
36
37 private byte[] readByteFromInputstream(InputStream is) throws IOException {
38
39 BufferedInputStream bis = new BufferedInputStream(is);
40
41 ByteArrayOutputStream baos = new ByteArrayOutputStream();
42
43 int BYTE_SIZE = 2 * 1024;
44 //創建字節數組作為緩存
45 byte[] b = new byte[BYTE_SIZE];
46
47 int c;
48 //c = bis.read(b)將字節流讀出後放入字節數組b中,baos.write(b, 0, c);讀取多少就寫入多少
49 while ((c = bis.read(b)) != -1) {
50 baos.write(b, 0, c);
51 baos.flush();
52 }
53 //將字節數組流轉換成字節數組
54 byte[] date = baos.toByteArray();
55
56 is.close();
57 baos.close();
58
59 return date;
60
61 }
62
63 }
算法—排序算法總結,排序算法總結
算法—排序算法總結,排序算法總結
Android 應用程序集成Google 登錄,androidgoogle
Android 應用程序集成Google 登錄,androidgoogle谷歌登錄API: https://developers.google.com/ide
android:TextView實現文字走馬燈效果(欺騙系統獲取持久的焦點)
android:TextView實現文字走馬燈效果(欺騙系統獲取持久的焦點) 通常情況下我們想實現文字的走馬燈效果需要在xml文件中這樣設置 <textv
優質Android小部件:索尼滾動相冊,android索尼
優質Android小部件:索尼滾動相冊,android索尼 雖然騷尼手機賣的不怎麼樣,但是有些東西還是做的挺好的,工業設計就不用說了,索尼的相冊的雙指任意縮放功能也是尤