前面讨论了Android中对资源的分类,在Android中,使用资源通常有两种方式,一种是代码中使用,另外一种是一些资源XML文件引用其它资源。这些资源如何进行区分呢?Android采用的是资源唯一ID方式,这里资源唯 一ID主要包括资源的类型和资源的名称。考虑到名称经常有重复的可能性,因此Android中对不同的资源设置了不同的存储目录,并且通常要求同一个res目录下的所有资源需要设置唯一资源名称。同时注意这里面的资源名称是一个宽泛概念,具体对应的文件就惠文件名,布局的XML中通常是一些关键属性如android:name/id等,通常是一个字符串,其命令规则要求在可见范围内的唯一,比喻说两个布局文件中,两个不同的UI元素的ID是否一定要不同的呢?这个其实取决于你在使用这个ID的过程中是否会同时使用。通常情况下,在可预见的范围内,不要命名相同。我们前面说了访问资源在ANDROID中两种方式,一种代码,另一种就是资源相互引用如XML中引用。那么代码中如何访问呢,这里ANDROID提供了一个工具aapt,他会自动扫描RES目录并产生R.CLASS,在这个文件中会为每个资源分类定义出对应的值。如下图所示。。
如上图所示,其中资源类型是由Android已规定好的,不可更改的,常用有R.anim, R.drawable,R.color,R.layout,R.menu,R.string,R.array,R.plurals,R.style,R.bool.R.Integer.R.dimen等。资源名称,通常是文件除去扩展的文件名,如有两个同名的,但扩展名不一样的图片,就不能处理,需要避免这种。还有相同的ID名称等,也是能避免尽量避免,否则要做特殊处理。
【1】在代码中使用资源,代码中使用资源通常是使用R类中的资源对应的int变量,常用的方式是 R.layout.main也就是R.资源类型.资源名称. 系统提供了一些常用的API去访问这些资源,如Resources,AssertManager等。另外系统自带的一些资源也可以通过Android.R.*去访问。如下图所示:
【2】在XML中使用资源,这主要是因为ANDROID的一些XML文件比喻用来表示布局或者表示SELECT等这些特性时,可以将一些属性通过引用的方式来使用资源。这里需要注意几个符号的正确使用,通常普通资源是用@开头,但style是用?。对ID来说,ANDROID中普通属性ID通常用@+id/*方式来命名,而引用则是@id/name。如下图所示:
需要注意的如果这些资源在本地,不需要带有包名,如果是系统资源,则通常是@android:color带有android前缀。
前面主要讲述的是资源的访问,实际上资源的访问在ANDROID应用中时刻都在访问,因此,当一个应用在ANDROID上运行,由于手持方式的改变,比喻由横屏转为竖屏或者其它方式,这时候作为应用的界面ACTIVITY需要重新引用相应的资源。好在我们的ACTIVITY是有生命周期的。有两种方式,一种是当配置改变自己来处理,另一种是由系统来处理。下面我们讲述一些常见的资源类型:
【1】Color Android中COLOR表示方式一种是字符串,一种是数值。数值的方式是#Alpha-Red-Green-Blue。定义是保存的res/value下的任一个XML文件中。如下图所示:
颜色的访问同前面的方式一样,如下图所示:
使用示例如下(定义一个clolorxml文件,在LAYOUT和ACTIVITY中使用):
【2】String 字符串,这个主要是为国际化准备的,一些提示性的信息在国际化版本中可以方便的通过定制这些字符串来实现。Android支持一些简单的格式化字符串,也支持通过string.format对这些字符串进行第二次格式化。具体如下:
1)特殊字符,也就是元字符,如’ & ;等如果要使用,最好使用“”括起来。如下:
2)HTML标签,目前支持<b><i><u>如下所示:
3)二次格式化,支持$1,$2符号。如下图所示:
对一些同时采用HTML的标签的格式化,可以使用Html.fromHtml(txt)