返回信息流【 以下文字转载自 Board_Apply 讨论区 】
发信人: zzsanduo (出太阳出太阳), 信区: Board_Apply
标 题: 【范文三】 浅谈OPhone中的资源管理和使用
发信站: 北邮人论坛 (Wed Mar 10 23:18:37 2010), 站内
浅谈OPhone中的资源管理和使用
OPhone平台中有多种资源类型,例如字符串,图片等等。每种资源都有其固定的语法和格式,在应用程序的源代码目录中也有其特殊的位置。总的说来,资源以三种类型的文件存放在本地:XML文件,位图文件以及原始数据文件。下面简单介绍了每种资源的概念和目录布局,关于其语法请参考OPhone中语法相关的文档。
1、资源类型
OPhone系统中的资源多种多样,包括表现为xml文件的color, string, dimension, animation, menus, layout等,也包括png, jpg, gif格式的图片(建议使用png格式),还包括原始数据文件,如包含一段声音的文件等等。
2、资源目录组织
每种资源在源码目录中都有其特定的位置,它们的根目录是源码目录中的res/目录,资源打包工具(aapt)会根据其所在的子目录和文件格式对其进行编译。下面看一下res/目录的组织。
res/anim/
res/drawable/
res/layout/
res/values/
res/xml/
res/raw/
1、anim目录
该目录下存放着描述animation类型的xml文件。
2、drawable目录
该目录下存放着.png,.9.png,.jpg等图片文件。
3、layout目录
该目录下存放着屏幕UI的layout文件,格式为xml。
4、values目录
该目录下可以存放多种资源类型的xml文件,例如定义了数组的array.xml,定义了颜色的colors.xml,定义了dimension的 dimnes.xml,定义了字符串的strings.xml,定义了style的styles.xml。
5、xml目录
该目录存放了用户自定义的xml文件。
6、raw目录
该目录可存放了用户的原始数据文件,如声音文件等,这些文件在编译应用程序过程中不被编译,直接加到apk文件中。
上述目录中的文件在编译应用程序的过程中会被aapt编译成特定的格式以加快访问速度,并打包成Zip文件。如下图所示,在编译过程中,aapt会为每个资源生成一个唯一的ID值,并产生一个包含这些ID信息的类R。应用程序的JAVA文件中通过R.java中定义的这些ID来访问资源。
3、根据系统配置选择最佳资源
为增加应用程序UI的美观,达到最好的人机交互体验,通常需要根据当前的系统配置选择最佳的资源。这是通过创建与上述目录平行的目录并对目录名增加限定符来实现的。
4、资源管理的框架
资源管理的框架大致可以分为两层:Java层和Native层。Java层封装着访问各种资源的接口,而Native层则为Java层提供了对应的接口,提高访问资源的速度。如下图所示。
图1资源管理的框架
5、如何访问资源
在理解了OPhone中资源的类型,布局和简单框架后,我们来看看如何访问不同类型的资源。
要访问某个资源,必须先知道该资源的ID。在Java程序中,应用程序自身的资源可以简单的通过 R.resource_type.resource_name来引用;系统的资源必须通过 android.R.resource_type.resource_name来引用。而在xml类型的资源文件中,应用程序自身的资源可以通过 @resource_type/resource_name来引用;其它Package的资源必须通过@package:resource_type /resource_name来引用。
其次,访问某种类型的资源,必须通过其相应的语法格式来访问和使用,体现在Java中就是调用Resources等类的相应接口,体现在xml类型的资源文件中就是使用特定的属性。
然后,必须得到与应用程序相关的Resources类的实例,该实例一般通过Context.getResources()获得。
6、结束语
OPhone平台中的资源组织和管理是一个很有趣也很有意义的话题,了解各种资源的布局、框架及其访问方法,有助于开发者快速开发自己的应用程序,开发出更友好的程序界面。本文限于篇幅仅做了简略的介绍,更详细的资料请参考其它OPhone开发文档。
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #5同步于 2010/3/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
【范文三】 浅谈OPhone中的资源管理和使用 (转载)
haibara
2010/3/13镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。