assets资源用法总结-转自老巫
2016-04-27 09:50
267 查看
本节课开始讲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文件,可以通过下面这种方式获取:
思考:这里需要大家去区分Android的一些资源,像assets这种资源是不会被编译成字节码,然而像raw、drawable资源是Android指定的资源,可以通过R.xxx.filename来进行引用,如果在res自定义一个目录是不可以通过这种方式获取资源,引用的话会R.xxx.xxx cannot be resolved” 的错误。
这里补充一点就是,我们使用AS开发不会默认给我们创建assets目录,需要我们按一下方法去创建目录:
然后我们创建的项目有个.iml的配置文件,会有相应的配置,大家下去可以研究一下
上面是对assset资源的一些介绍,我们实际开发中如何获取assets目录下的资源呢:
1. 获取文件输入流
Context.getAssets().open(“filename”)
2. assets资源的绝对路径
file:///android_asset/文件名
比如在assets目录下有个test.txt文件,可以通过下面这种方式获取:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> assetsText.setText(getFromAssets(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"test.txt"</span>));</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> String <span class="hljs-title" style="box-sizing: border-box;">getFromAssets</span>(String filename) { String result = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span> { InputStream in = getResources().getAssets().open(filename); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> length = in.available(); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">byte</span>[] buffer = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">byte</span>[length]; in.read(buffer); result = EncodingUtils.getString(buffer, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"UTF-8"</span>); } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> (IOException e) { e.printStackTrace(); } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> result; } </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul>
思考:这里需要大家去区分Android的一些资源,像assets这种资源是不会被编译成字节码,然而像raw、drawable资源是Android指定的资源,可以通过R.xxx.filename来进行引用,如果在res自定义一个目录是不可以通过这种方式获取资源,引用的话会R.xxx.xxx cannot be resolved” 的错误。
这里补充一点就是,我们使用AS开发不会默认给我们创建assets目录,需要我们按一下方法去创建目录:
然后我们创建的项目有个.iml的配置文件,会有相应的配置,大家下去可以研究一下
相关文章推荐
- ARM裸机MMU调试
- 在Android中使用并发来提高速度和性能
- 数据库学习笔记
- 转载---CSS3实现曲线阴影和翘边阴影
- 0427团队项目 3.0--团队成立
- 给WinForm窗体添加快捷键 响应回车键、空格键
- [团队项目3.0]Scrum团队成立
- ASP.NET-常用正则表达式
- 图解Objectvie-C对象模型
- ReactNative警告:bind(): React component methods may only be bound to the component instance
- CarPlay wired连接与wireless连接相互切换
- js调用webservice构造SOAP进行身份验证
- c++ primer 学习笔记24 复制构造函数
- 我眼中“项目经理”需要回答的开放性问题
- 【剑指offer-Java版】49把字符串转换为整数
- javascript实现延时显示提示框特效代码
- TCP/IP详解 卷一 ---------ARP地址解析协议
- Android startActivityForResult onActivityResult 立即执行 和不执行的问题
- tftp环境搭建
- 问题解决:对Slidingmenu中控件监听