android下raw目录的作用,Android 之 assets目录和raw目录
Android 中存在assets目录和raw目录,它们既有相似之处又有所不同。
一、共同点:
目录下的资源会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。
二、区别
1、最直观的就是获取它们的 InputStream 的API不一样。
获取assets资源:InputStream assets = getAssets().open("xxxx");
获取raw资源:InputStream raw = getResources().openRawResource(R.raw.xxxx)
2、assets 下可以创建目录结构,而 res/raw 不可以。
3、assets 能够动态的列出assets中的所有资源 getAssets().list(String path); ,而 res/raw 不可以。
下面来说说它们主要的区别:
由于 raw 是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源 文件可以很容易的被Android的类和方法访问到,甚至在Android XML文件中你也可以@raw/的形式引用到它。在Android中,使用ID是访问一个文件最快捷的方式。MP3和Ogg文件放在这个目录下是比较合适 的。
assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与 Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目 录下会使一些操作更加方便,比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的。
另 外,网上关于assets和raw的资料,有说这两者中单个文件大小不能超过1M,即如果读取超过1M的文件 会报"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的IOException,还引申出种种解决方案。经验证,写了个Demo,发现将近5M的压缩 包在assets和raw中都能正常访问,因此在这里纠正一下,理论上只要打包不超过Android APK 50M大小的限制都是没有问题的。当然了,不排除是Android很早期的时候因为设备硬件原因aapt在编译的时候对这两个文件夹大小做出了限制,如果是这样,较新版的ADT应该不会出现这种情况。
http://ponystyle.com/blog/2010/03 /26/dealing-with-asset-compression-in-android-apps/ 。这篇文章应该还蛮有说服力的,从根本上说明了当时Android2.3以前产生资源文件单个文件大小不能超过1M的原 因和部分解决方法。不过由于限制是当时的aapt决定的,现在已经更新了多个版本的aapt已经不存在这种问题了。
Android Studio增加assets目录、raw目录
assets与res/raw不同 assets目录是Android的一种特殊目录,用于放置APP所需的固定文件,且该文件被打包到APK中时,不会被编码到二进制文件. Android还存在一种放置在re ...
【转】android资源目录---assets与res/raw区别
blog.csdn.net/hshm20517/article/details/6461890 assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中.与res/raw不同点在于,ASS ...
android资源目录---assets与res/raw区别
android资源目录---assets与res/raw的不同 Android 2011-05-24 14:40:21 阅读20 评论0 字号:大中小 订阅 assets:用于存放需要打包到应用程 ...
AssetsUtils【读取assets、res/raw、./data/data/包名/目录下的文件】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装了以下功能: 1.读取assets目录下的资源html.文件.图片,将文件复制到SD卡目录中: 2.读取res/raw目录下的文 ...
Android开发 assets目录
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
assets与res/raw资源目录的区别
1.简介 assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据.),这些文件将被原样打包到APK中应用使用. 2.不同 assets目录下的文件将原 ...
Android读取assets目录下的资源
1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过 Context.getAssets().open(“s ...
Android读写assets、raw、sdard和工程文件的方法
Android开发离不开对文件的操作,前面的文章“Android简易数据存储之SharedPreferences”和“Android数据存储之SQLite的操作”,分别讲解了简单的数据的存储和数据库数 ...
Android快速开发常用知识点系列目录
项目构建 Android项目目录结构模板以及简单说明[简单版] Android Studio配置统一管理依赖版本号引用 Android多Module下的Application引用方式 APP开篇 An ...
随机推荐
Activity 横竖屏切换
前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函 ...
Win7 64位命令行编译cuda及设置Windows显卡响应时间
在开始菜单中找到Visual Studio 2013 >> Visual Studio Tools 选择86或64版本的VC命令提示符环境,我用的 VS2013 x86 Native To ...
[salesforce] URLFOR function finally
While developing your Visualforce pages you may need to be able to obtain the URL of certain actions ...
Event/window.Event属性和方法
type:事件的类型,如onlick中的click:srcElement/target:事件源,就是发生事件的元素:button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下 ...
Visual C#使用DirectX实现视频播放
Visual C#使用DirectX实现视频播放 visual|视频播放 - 很多人第一次接触到DirectX大都是通过游戏,至于安装.升级DirectX的原因无非是满足游戏运行的需要.Direct ...
eclipse的插件
jode_1.0.6(Java Optimize and Decompile Environment ) 非常好用的Eeclipse的反编译插件,随时点击,随时查看源代码,但他的官方下载的都是核心源码 ...
vscode 正则表达式替换
比如把1.aa2.bbb替换成 1.aa2.bbb则,查找\d+ 替换成 \n$0 $0为查找的正则匹配项editplus为\0
使用kermit通过串口升级uboot
在开发板的启动选项中看到如下两行: 7: Load Boot Loader code then write to Flash via Serial. 9: Load Boot Loader code ...
学习笔记TF025:自编码器
传统机器学习依赖良好的特征工程.深度学习解决有效特征难人工提取问题.无监督学习,不需要标注数据,学习数据内容组织形式,提取频繁出现特征,逐层抽象,从简单到复杂,从微观到宏观. 稀疏编码(Sparse ...
nova event
nova处理neutron发送过来的event事件.暂时追踪nova event部分代码 tail -f /var/log/nova/nova-api.log 下面就是一个事件 Creating ...
android下raw目录的作用,Android 之 assets目录和raw目录相关推荐
- linux下dev目录的作用,Android/Linux根目录下常见目录作用
当adb shell进入Android系统内部后,ls会看到根目录下出现不少目录,如dev.sys.mnt等目录,对于这些目录的作用常常让人模棱两可,有必要对其学习了解. 首先要明白目录也是一种文件, ...
- android:ellipsize=end 不起作用,android:ellipsize=end 失效或者 相关的Bug
其实这文章有点傻逼. 相关的问题 TextView android:ellipsize="end"超出一个字符时不显示-的解决 http://www.pocketdigi.com/ ...
- Android中layout目录的作用,Android 开发中layout下的子文件夹
Android 开发中layout下的子文件夹 发布时间:2020-10-25 11:42:36 来源:脚本之家 阅读:71 作者:厚土火焰山 如果一个项目内有很多个界面,那么在layout下会有太多 ...
- android 多语言不起作用,Android本地化语言环境不起作用,所有区域代码都存在问题...
我需要将除瑞士之类的子语言环境添加到我的应用程序中,而不是普通的德语. 我找到的德语资源文件夹的语言环境扩展名为de.所以我的文件夹名为"values-de".这很好. 然后我添加 ...
- android wms各个类的作用,Android系统服务 —— WMS
"可以毫不夸张的说,Android的framework层主要是由WMS.AMS还有View所构成,这三个模块穿插交互在整个framework中,掌握了它们之间的关系和每一个逻辑步骤,你对fr ...
- android 隐藏状态栏 不起作用,Android 状态栏的隐藏和显示
在Android应用中我们可能会碰到这样的需求,隐藏状态栏或者状态栏和应用背景一样的颜色,比如下图: 状态栏和背景一个颜色 Android应用程序的界面上系统元素构成如下图: 在4.1之后的系统,隐藏 ...
- android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法
Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...
- android中监听的作用,Android里的AdapterView中OnItemClickListener监听器四个参数的含义...
对Android开发中的Adapter接口的onItemClickListener监听器四个参数(arg)的理解: 代码:public void onItemClick(AdapterView> ...
- android下拉刷新的方法,Android App使用RecyclerView实现上拉和下拉刷新的方法
关于recyclerview recyclerview在android 5.0以来被引入,以前经常使用的listview 继承的是abslistview,而recyclerview则直接继承 view ...
最新文章
- PHP连接MySQL的2种方法以及防止乱码
- 在docker中使用MySQL数据库
- linux查看文件隐藏字符,Linux使用cat命令显示隐藏字符的方法
- python初学者编程指南_动态编程初学者指南
- java 字节序列_java – 这个线程安全的字节序列生成器有什么问题?
- oracle cronb,利用Crontab实现对Oracle数据库的定时备份
- dbscan算法中 参数的意义_常用聚类算法
- 灵活地横向扩展:从文件系统到分布式文件系统
- Jquery通过ajax加载json,jquery ajax json 异步加载数据
- 运动会比赛计分系统c语言课程设计,c语言课程设计运动会比赛计分系统(含任务书).doc...
- web网页对话框的一些设置
- 第五讲 交错级数、绝对收敛和条件收敛
- B站视频下载:如何下载B站视频到电脑上
- 国内汽车车载电源DCDC首家,硬件原理图,软件源码
- 基于 SLS 构建 RDS 审计合规监控
- 人生是一场旅程,重要的不是终点,是自己路上的风景
- 数据可视化案例(四)——新零售数据大脑,助力智慧零售
- 英语口语232之每日十句口语
- 如何彻底删除keil5
- 二[2-(2,4-二氟苯基)-5-甲基吡啶][2,2‘-联(四叔丁基吡啶)]铱二(六氟磷酸)盐,1335047-34-1
热门文章
- HTMLCSS 超简单的前端设计入门-2!
- 2019-03-18-算法-进化(有效的字母异位词)
- CF623E Transforming Sequence(多项式/倍增fft/动态规划)
- P3706 [SDOI2017]硬币游戏
- A - TOYS POJ - 2318
- 牛客网 【每日一题】4月15日 Treepath
- CodeForces 1396E Distance Matching(构造+树的重心+dfs+set)
- 8.12模拟:dp递推
- 4.6模拟 宽度优先搜索
- P1447-[NOI2010]能量采集【GCD,数论,容斥】