前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >A007-assets资源

A007-assets资源

作者头像
巫山老妖
发布2018-07-23 10:17:01
6350
发布2018-07-23 10:17:01
举报
文章被收录于专栏:小巫技术博客小巫技术博客

本节课开始讲Android中所用到的一些资源,首先来讲assets资源,它是Android的其中一种资源,跟raw和drawable资源有点不同,我们获取这个目录下的文件需要指定文件的路径,它里面的文件不会映射到R.java文件中,而res目录下的资源文件时会自动映射到R.java中,我们打包成apk的时候,assets目录下的文件不会被编译成二进制文件,而是直接打包到apk文件中。我们可以打包项目成apk,然后更改它的后缀名为.zip,再进行解压,可以看到assets目录的文件。

上面是对assset资源的一些介绍,我们实际开发中如何获取assets目录下的资源呢:

  1. 获取文件输入流 Context.getAssets().open(“filename”)
  2. assets资源的绝对路径 file:///android_asset/文件名

比如在assets目录下有个test.txt文件,可以通过下面这种方式获取:

代码语言:javascript
复制
 assetsText.setText(getFromAssets("test.txt"));
代码语言:javascript
复制
 private String getFromAssets(String filename) {
        String result = "";        try {
            InputStream in = getResources().getAssets().open(filename);            int length = in.available();            byte[] buffer = new byte[length];

            in.read(buffer);

            result = EncodingUtils.getString(buffer, "UTF-8");

        } catch (IOException e) {
            e.printStackTrace();
        }        return result;
    }

思考:这里需要大家去区分Android的一些资源,像assets这种资源是不会被编译成字节码,然而像raw、drawable资源是Android指定的资源,可以通过R.xxx.filename来进行引用,如果在res自定义一个目录是不可以通过这种方式获取资源,引用的话会R.xxx.xxx cannot be resolved” 的错误。

这里补充一点就是,我们使用AS开发不会默认给我们创建assets目录,需要我们按一下方法去创建目录:

然后我们创建的项目有个.iml的配置文件,会有相应的配置,大家下去可以研究一下

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小巫技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档