每天记录学习的新知识: AssetManager 获取资源的方式

本文详细介绍了Android中两种主要资源文件的分类与访问方式:res目录下的可编译资源文件和assets目录下的原生资源文件。针对assets资源,文章深入讲解了如何利用AssetManager工具类进行读取操作,包括加载网页、图片等不同类型资源的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考1:https://www.aliyun.com/jiaocheng/80561.html
参考2: https://www.2cto.com/kf/201611/569278.html

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,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。

Api:

1、得到AssetManager

context.getAssets();

2、关闭AssetManager

AssetManager.close() ;

3、Resources和Assets 中的文件只可以读取而不能进行写的操作。

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

final String[] list(String path) ;

5、ACCESS_STREAMING 模式打开assets下的指定文件

final InputStream open(String fileName);

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

final InputStream open(String fileName, int accessMode) ;

7、开发资源文件

AssetManager.open(String filename)

返回的是一个InputSteam类型的字节流,这里的filename必须是文件比如
(aa.txt;img/semll.jpg),而不能是文件夹。

加载多种资源文件:

1、加载assets目录下的网页:

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

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

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

注意:文件名字不能带有空格和其他非法字符,只能英文字母大小、数字、下划线。

2、访问assets目录下的资源文件:

        Bitmap image = null;
        AssetManager am = getResources().getAssets();
        try {
            InputStream is = am.open(fileName);
            image = BitmapFactory.decodeStream(is);
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

3、获取assets下的某个目录下的文件路径

List fileNames = null;
try {
String files[] =context.getAssets().list(path); 
fileNames = Arrays.asList(files[]);
} catch (IOException e) {
e.printStackTrace();
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周周都刷火焰猫头鹰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值