来自 IT技术分享 2019-01-31 09:21 的文章

Android开发之assets目录下资源使用总结,androidassets

Android开发之assets目录下资源使用总结,androidassets

预前知识:

Android资源文件分类:

Android资源文件大致可以分为两种:

第一种是res目录下存放的可编译的资源文件:

    这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可;

 第二种是assets目录下存放的原生资源文件:

      因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们。那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/res和被绑定在apk里,并不会解压到/data/data/YourApp目录下去,所以我们无法直接获取到assets的绝对路径,因为它们根本就没有。

还好Android系统为我们提供了一个AssetManager工具类。

      查看官方API可知,AssetManager提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。

AssetManager类
概述:

       提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。通过getAssets()方法获取AssetManager对象。

AssetManager类常用方法:

Public Methods

final String[]

list(String path)

返回指定路径下的所有文件及目录名。

final InputStream

open(String fileName)

使用 ACCESS_STREAMING模式打开assets下的指定文件。.

final InputStream

open(String fileName, int accessMode)

使用显示的访问模式打开assets下的指定文件.


应用实例
1.加载assets目录下的网页:

//加载assets/win8_Demo/目录下的index.html网页

webView.loadUrl("file:///android_asset/win8_Demo/index.html");

说明:这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会的加载。

使用assets目录下的图片资源

 


Android读取assets目录下的视屏资源

在Android 应用中使用assets目录下存放的资源文件,assets目录下存放的资源代表应用无法直接访问的原生资源,应用程序通过AssetManager以二进制流的形式来读取资源。
 
Android列举assets内的文件夹问题


假设asserts目录下文件如上图。
在onCreate中遍历得到book下目录和它里面文件名。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AssetManager asserter = getAssets(); String[] bookDirs = null; try { // 0,1等目录下必须要有文件,才能被list出来。 bookDirs = asserter.list("book"); for (String dir : bookDirs) {// 取到0,1等目录 Log.e("book", dir); String[] books = asserter.list("book/" + dir); for (String book : books) {//取得0,1目录下的文件 Log.e("txt", book); InputStream is = asserter.open("book/" + dir+"/"+book); InputStreamReader isReader = new InputStreamReader(is,"UTF-8"); BufferedReader br = new BufferedReader(isReader); String line = null; while((line = br.readLine()) != null){//读txt文件中内容 Log.e("txt中内容", line); } br.close(); isReader.close(); } } } catch (IOException e) { e.printStackTrace(); } }输出:



 

http://www.bkjia.com/Androidjc/857234.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/857234.htmlTechArticleAndroid开发之assets目录下资源使用总结,androidassets 预前知识: Android资源文件分类: Android 资源文件大致可以分为两种: 第一种是res目录下...

本文源自: AG88平台