AssetManager asset的使用

來源:互聯網
上載者:User

Android系統為每個新設計的程式提供了/assets目錄,這個目錄儲存的檔案可以打包在程式裡。/res和/assets的不同點是,android不為/assets下的檔案產生ID。如果使用/assets下的檔案,需要指定檔案的路徑和檔案名稱。下面這個例子,顯示如何訪問/assets下的內容。

   在檔案中/assets中建立/image子目錄,將/res/drawable下的icon.png子目錄拷貝到該目錄中。在/assets子目錄中建立readme.txt檔案,檔案中輸入文本“hello,world!!!”。

布局檔案:main.xml

<?xml version="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

   android:orientation="vertical"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   >

<TextView 

   android:layout_width="fill_parent"

   android:layout_height="wrap_content"

   android:text="@string/hello"

   />

   <EditText android:id="@+id/firstId"

    android:layout_width="fill_parent"

   android:layout_height="wrap_content"

   android:text="@string/hello"

   />

   <EditText android:id="@+id/secondId"

    android:layout_width="fill_parent"

   android:layout_height="wrap_content"

   android:text="@string/hello"

   />

 

</LinearLayout>

 

程式檔案:

package com.cn.getassets;

 

import android.app.Activity;

import android.os.Bundle;

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.util.Log;

import android.widget.EditText;

 

 

 

public class GetAssets extendsActivity {

 private EditTextfirstField;

 private EditTextsecondField;

 @Override

 public voidonCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);

//  Log.d("showmain.xml","ok");

 setContentView(R.layout.main);

  Log.d("showmain.xml","ok");

  AssetManager assetManager =getAssets();

  String[] files =null;

  try {

   files =assetManager.list("image");

  } catch (IOException e){

  Log.e("tag", e.getMessage());

  }

  firstField = (EditText)findViewById(R.id.firstId);

 firstField.setText(Integer.toString(files.length)+"file.Filename is"+ files[0]);

  InputStream inputStream =null;

  try {

   inputStream =assetManager.open("readme.txt");

  } catch (IOException e){

  Log.e("tag", e.getMessage());

  }

  String s =readTextFile(inputStream);

  secondField = (EditText)findViewById(R.id.secondId);

  secondField.setText(s);

 }

 

 private StringreadTextFile(InputStream inputStream) {

  ByteArrayOutputStreamoutputStream = new ByteArrayOutputStream();

  byte buf[] = newbyte[1024];

  int len;

  try {

   while((len = inputStream.read(buf)) != -1) {

   outputStream.write(buf, 0, len);

   }

  outputStream.close();

  inputStream.close();

  } catch (IOException e){

  }

  returnoutputStream.toString();

 }

}

程式顯示結果:使用模擬器。

http://blog.sina.com.cn/s/blog_6cf0d3f30100m2x6.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.