Android应用程序是将代码逻辑和界面资源进行分离的,Android应用程序资源可以分为两大类,分别是assets和res

assets

assets类资源放在工程根目录的assets子目录下,它里面保存的是一些原始的文件,可以以任何方式来进行组织。这些文件最终会被原装不动地打包在apk文件中。如果我们要在程序中访问这些文件,那么就需要指定文件名来访问。例如,假设在assets目录下有一个名称为filename的文件,那么就可以使用以下代码来访问它:

AssetManager am= getAssets();  InputStream is = assset.open("filename");

res

res类资源放在工程根目录的res子目录下,它里面保存的文件大多数都会被编译,并且都会被赋予资源ID。这样我们就可以在程序中通过ID来访问res类的资源。res类资源按照不同的用途可以进一步划分为以下9种子类型:

  1. animator
  2. anim
  3. color
  4. drawable
  5. layout
  6. menu
  7. raw
  8. values
  9. xml

animator

animator这类资源文件呢是保存在res/animator目录下,主要呢是用来描述属性动画的,我做了一个属性动画总结,可以查看在animator目录下的文件如何使用

anim

这类资源文件呢是保存在res/anim目录下,主要呢是用来描述补间动画的,我做了一个补间动画总结,可以查看在anim目录下的文件如何使用,以及补间动画的属性

color

这类资源是以XML文件形式保存在res/color目录下,用描述对象颜色状态选择。例如,可以规定一个对象在不同状态下显示不同的颜色。对象的状态可以划分为pressed、focused、selected、checkable、checked、enabled和window_focused等7种。

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:color="#d8d8d8" android:state_enabled="false" />    <item android:color="#999999" android:state_pressed="true" />    <item android:color="#999999" android:state_focused="true" />    <item android:color="#666666" />selector>

drawable

这类资源以XML或者Bitmap文件保存在res/drawable目录下,用来描述可绘制对象。例如,我们可以在里面放置一些图片(.png, .9.png, .jpg, .gif),来作为程序界面视图的背景图。注意,保存在这个目录中的Bitmap文件在打包的过程中,可能会被优化的。例如,一个不需要多于256色的真彩色PNG文件可能会被转换成一个只有8位调色板的PNG面板,这样就可以无损地压缩图片,以减少图片所占用的内存资源。

layout

这类资源是我们最常用的,通常以XML文件保存在res/layout目录下,主要用来编写应用程序界面布局

这类资源以XML文件保存在res/menu目录下,用来描述应用程序菜单,例如,Options Menu、Context Menu和Sub Menu

raw

这类资源以任意格式的文件保存在res/raw目录下,它们和assets类资源一样,都是原装不动地打包在apk文件中的,不过它们会被赋予资源ID,这样我们就可以在程序中通过ID来访问它们。例如,假设在res/raw目录下有一个名称为filename的文件,并且它在编译的过程,被赋予的资源ID为R.raw.filename,那么就可以使用以下代码来访问它:

Resources res = getResources();InputStream is = res .openRawResource(R.raw.filename);

values

这类资源以XML文件保存在res/values目录下,用来描述一些简单值,例如,数组、颜色、尺寸、字符串和样式值等,一般来说,这六种不同的值分别保存在名称为arrays.xml、colors.xml、dimens.xml、strings.xml和styles.xml文件中。

xml

这类资源以XML文件保存在res/xml目录下,一般就是用来描述应用程序的配置信息。

注意,上述9种类型的资源文件,除了raw类型资源,以及Bitmap文件的drawable类型资源之外,其它的资源文件均为文本格式的XML文件,它们在打包的过程中,会被编译成二进制格式的XML文件。这些二进制格式的XML文件分别有一个字符串资源池,用来保存文件中引用到的每一个字符串,包括XML元素标签、属性名称、属性值,以及其它的一切文本值所使用到的字符串。这样原来在文本格式的XML文件中的每一个放置字符串的地方在二进制格式的XML文件中都被替换成一个索引到字符串资源池的整数值。这样做有两个好处:

A. 文件占用更小。例如,假设在原来的文本格式的XML文件中,有四个地方使用的都是同一个字符串,那么在最终编译出来的二进制格式的XML文件中,字符串资源池只有一份字符串值,而引用它的四个地方只占用一个整数值。

B. 解析速度更快。由于在二进制格式的XML文件中,所有的XML元素标签和属性等值都是使用整数来描述的,因此,在解析的过程中,就不再需要进行字符串解析,这样就可以提高解析速度

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. 分支和循环(二)(零基础学习C语言)
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  7. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  8. 用git的windows客户端msysgit下载android代码
  9. 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少8

随机推荐

  1. Android集成第三方支付宝支付开发App(面试
  2. Android O wifi turn on -- start suppli
  3. Android之普通对话框
  4. Android : Resource is not a Drawable (
  5. android获取sd卡路径方法:
  6. Android Dex文件结构
  7. android文档笔记(1)
  8. Android新设备“购买力”排行榜:东北、西
  9. Android SDK Tools r24.2
  10. Android 动态获取文本宽度