Androidassets目录介绍和应用
说明:
1、文章转自:http://blog.toeach.net/2010/04/04/using-assets-in-android/
2、对原文的修改:增加注释,原英文已经翻译。
3、程序经过调试验证,运行正常。
4、原文题目:Using assets in Android
Android系统为每个新设计的程序提供了/assets目录,这个目录保存的文件可以打包在程序里。/res和/assets的不同点是,android不为/assets下的文件生成ID。如果使用/assets下的文件,需要指定文件的路径和文件名。下面这个例子,显示如何访问/assets下的内容。
<wbr><wbr> 在文件中/assets中建立/image子目录,将/res/drawable下的icon.png子目录拷贝到该目录中。在/assets子目录中建立readme.txt文件,文件中输入文本“hello,world!!!”。</wbr></wbr>
<?xml version="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
<wbr><wbr><wbr>android:orientation=<em>"vertical"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>android:layout_width=<em>"fill_parent"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>android:layout_height=<em>"fill_parent"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>></wbr></wbr></wbr>
<TextView<wbr></wbr>
<wbr><wbr><wbr>android:layout_width=<em>"fill_parent"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>android:layout_height=<em>"wrap_content"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>android:text=<em>"@string/hello"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>/></wbr></wbr></wbr>
<wbr><wbr><wbr><EditText android:id=<em>"@+id/firstId"</em></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>android:layout_width=<em>"fill_parent"</em></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>android:layout_height=<em>"wrap_content"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>android:text=<em>"@string/hello"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>/></wbr></wbr></wbr>
<wbr><wbr><wbr><EditText android:id=<em>"@+id/secondId"</em></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>android:layout_width=<em>"fill_parent"</em></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>android:layout_height=<em>"wrap_content"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>android:text=<em>"@string/hello"</em></wbr></wbr></wbr>
<wbr><wbr><wbr>/></wbr></wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
</LinearLayout>
<wbr></wbr>
程序文件:
package com.cn.getassets;
<wbr></wbr>
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;
<wbr></wbr>
<wbr></wbr>
<wbr></wbr>
public class GetAssets extendsActivity {
<wbr><strong>private</strong> EditTextfirstField;</wbr>
<wbr><strong>private</strong> EditTextsecondField;</wbr>
<wbr>@Override</wbr>
<wbr><strong>public void</strong>onCreate(Bundle savedInstanceState) {</wbr>
<wbr><strong>super</strong>.onCreate(savedInstanceState);</wbr>
//<wbr> Log.d("showmain.xml","<u>ok</u>");</wbr>
<wbr>setContentView(R.layout.<em>main</em>);</wbr>
<wbr> Log.<em>d</em>("showmain.xml","ok");</wbr>
<wbr> AssetManager assetManager =getAssets();</wbr>
<wbr> String[] files =<strong>null</strong>;</wbr>
<wbr><strong>try</strong> {</wbr>
<wbr><wbr> files =assetManager.list("image");</wbr></wbr>
<wbr> } <strong>catch</strong> (IOException e){</wbr>
<wbr><wbr>Log.<em>e</em>("tag", e.getMessage());</wbr></wbr>
<wbr> }</wbr>
<wbr> firstField = (EditText)findViewById(R.id.<em>firstId</em>);</wbr>
<wbr>firstField.setText(Integer.<em>toString</em>(files.length)+"file.Filename is"+ files[0]);</wbr>
<wbr> InputStream inputStream =<strong>null</strong>;</wbr>
<wbr><strong>try</strong> {</wbr>
<wbr><wbr> inputStream =assetManager.open("readme.txt");</wbr></wbr>
<wbr> } <strong>catch</strong> (IOException e){</wbr>
<wbr><wbr>Log.<em>e</em>("tag", e.getMessage());</wbr></wbr>
<wbr> }</wbr>
<wbr> String s =readTextFile(inputStream);</wbr>
<wbr> secondField = (EditText)findViewById(R.id.<em>secondId</em>);</wbr>
<wbr> secondField.setText(s);</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr><strong>private</strong> StringreadTextFile(InputStream inputStream) {</wbr>
<wbr> ByteArrayOutputStreamoutputStream = <strong>new</strong> ByteArrayOutputStream();</wbr>
<wbr><strong>byte</strong> buf[] = <strong>newbyte</strong>[1024];</wbr>
<wbr><strong>int</strong> len;</wbr>
<wbr><strong>try</strong> {</wbr>
<wbr><wbr><strong>while</strong>((len = inputStream.read(buf)) != -1) {</wbr></wbr>
<wbr><wbr><wbr>outputStream.write(buf, 0, len);</wbr></wbr></wbr>
<wbr><wbr> }</wbr></wbr>
<wbr><wbr>outputStream.close();</wbr></wbr>
<wbr><wbr>inputStream.close();</wbr></wbr>
<wbr> } <strong>catch</strong> (IOException e){</wbr>
<wbr> }</wbr>
<wbr><strong>return</strong>outputStream.toString();</wbr>
<wbr>}</wbr>
}
程序显示结果:使用模拟器。
转:http://blog.sina.com.cn/s/blog_6cf0d3f30100m2x6.html