asset
来源:互联网 发布:js删除class属性 编辑:程序博客网 时间:2024/04/25 16:10
预前知识:
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,图片等文件也会的加载。
2.访问assets目录下的资源文件:
AssetManager.open(String filename),返回的是一个InputSteam类型的字节流,这里的filename必须是文件比如
(aa.txt;img/semll.jpg),而不能是文件夹。
3.获取assets的文件及目录名:
//获取assets目录下的所有文件及目录名,content(当前的上下文如Activity,Service等ContextWrapper的子类的
都可以)
String fileNames[] =context.getAssets().list(path);
4.将assets下的文件复制到SD卡:
5.使用assets目录下的图片资源:
6.播放assets目录下的音乐
首先,获取通过openFd()的方法获取asset目录下指定文件的AssetFileDescriptor对象。
最后,调用prepare方法准备音乐,start方法开始播放音乐。
预备知识:
AssetFileDescriptor简介:
在AssetManager中一项的文件描述符。这提供你自己打开的FileDescriptor可用于读取的数据,以及在文件中的
偏移量和长度的该项的数据。
可以通过AssetManager的openFd()的方法获取asset目录下指定文件的AssetFileDescriptor对象。
常用方法:
Public Methods
FileInputStream
createInputStream()
为asset创建并返回一个自动关闭的输入流。
FileOutputStream
createOutputStream()
为asset创建并返回一个自动关闭的输出流。
FileDescriptor
getFileDescriptor()
返回可用于读取文件中的数据的FileDescriptor对象。
long
getLength()
返回该asset中项的数据的总字节数。
long
getStartOffset()
返回asset中项的数据字节开始偏移。
具体代码:
- asset
- asset
- Illiquid asset
- asset/ckasset
- Asset Bundle
- Asset Loading
- Asset Bundle
- Asset Labels
- chapter29 Embedding Asset
- 资产泡沫 asset bubble
- AssetManager asset的使用
- Create asset using BAPI_FIXEDASSET_CREATE1
- Asset Store 资源商店
- AssetManager asset的使用
- AssetManager asset的使用
- AssetManager asset的使用
- Copy asset to sdcard
- AssetManager asset的使用
- ubuntu linux 更换 阿里云 软件源 安装 svn
- [动态规划] LCS最长公共子序列问题
- OpenStack Tacker介绍
- Nginx php下实现rewrite和pathinfo
- Ubuntu配置腾讯ssl
- asset
- HTML5存储方式总结
- Ubuntu卸载掉不需要的软件
- A联合布局,侧滑和frament
- CentOs7安装与配置Redis单机版图文详解
- 数据流中的中位数java实现
- ffmpeg解码JPG和PNG等图片 2013-05-15 09:50:22 分类: 嵌入式 【特别提醒:本文写作时,贴上去的代码,"\n"回车符号的"\"没有了,不知道为啥,所以阅读代码时
- Type handler was null on parameter mapping for property '__frch_uid_0'
- HTTP消息头网页缓存控制以及header常用指令(转)