Android中資源檔assets和res下面raw檔案的使用不同點

來源:互聯網
上載者:User

       在建立項目中一般會預設建立assets檔案,當然我們還可以在res檔案下面建立raw檔案夾,這裡面都可以存放一些圖片,音頻或者文本資訊,可以供我們在程式當中進行使用,不過他們兩個也有不同點;

      assets下面的檔案不會被編譯,通過路徑可以去訪問其中的內容。raw中檔案會自動編譯,我們可以在R.java檔案中找到對應的ID,

    看下面:

       那麼既然這樣那我們平時該怎麼樣進行把資源放入這兩個檔案當中呢?

      我個人平時喜歡比較檔案的大小,如果檔案比較大一點的會放入到aeests檔案中,因為用這個檔案檔案當中的資訊,相當於要去進行IO流操作,比較耗時的操作

      其中比較重要的是擷取到Assets和Raw檔案夾中的資源方法:

      Assets:AssetManager assetManager = getAssets();

      Raw:        InputStream inputStream = getResources().openRawResource(R.raw.demo); 

      下面該Demo的Activity原始碼:

package com.jiangqq.aeesrtandraw;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.widget.EditText;

/**
 * 該Demo示範Assets和Raw檔案夾中檔案的使用方法
 * 
 * @author jiangqq
 * 
 */
public class AeesrtsAndRawActivity extends Activity {
    private EditText et1, et2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        readAssets();
        readRaw();
    }

    /**
     * 使用Assets中的檔案
     */
    private void readAssets() {
        et1 = (EditText) findViewById(R.id.et1);
        AssetManager assetManager = getAssets();
        try {
            InputStream inputStream = assetManager.open("demo.txt");
            et1.setText(read(inputStream));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 使用Raw中的檔案
     */
    private void readRaw() {
        et2 = (EditText) findViewById(R.id.et2);
        InputStream inputStream = getResources().openRawResource(R.raw.demo);
        et2.setText(read(inputStream));
    }

    /**
     * 進行IO流讀寫
     * 
     * @param inputStream
     * @return oStream.toString() or “檔案讀寫失敗”
     */
    private String read(InputStream inputStream) {

        try {
            ByteArrayOutputStream oStream = new ByteArrayOutputStream();
            int length;
            while ((length = inputStream.read()) != -1) {
                oStream.write(length);
            }
            return oStream.toString();
        } catch (IOException e) {
            return "檔案讀寫失敗";
        }
    }
}

 

布局檔案:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/et1" />

        <EditText
            android:id="@+id/et1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/et2" />

        <EditText
            android:id="@+id/et2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

</LinearLayout>Demo運行效果:

這樣就OK了。

url:http://greatverve.cnblogs.com/archive/2012/01/09/android-assets-res.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.