android应用的资源

应用资源可以分为两大类:

1、无法直接访问的原生资源,保存在asset目录下。

2、可以通过R资源清单类访问的资源,保存在res目录下。

资源的类型以及存储方式:

android要求在res目录下用不同的子目录来保存不同的应用资源:

资源的使用:

由于android SDK会在编译应用时在R类中为/res目录下的所有资源创建索引项,因此在java代码中访问资源主要是通过R类来完成:

[<package_name>.]R.<resource_type>.<resource_name>

 

package_name:指定R类所在的包

resource_type:R类中代表不同资源类型的子类

resource_name:指定资源的名称

 

XML文件中使用资源:

@[<package_name>.]<resorce_type>/<resource_name>

 

package_name:指定R类所在的包

resource_type:R类中代表不同资源类型的子类

resource_name:指定资源的名称

 

字符串、颜色、尺寸资源:

他们对应的XML文件都在/res/values目录下:

 

 

颜色值的定义:android中的颜色是通过红、绿、蓝三原色和透明度来标示的,颜色值总是以井号(#)开头,接下来是:Alpha-Red-Green-Blue的形式。其中Alpha值可以省略。如果省略了Alpha值,那么颜色默认是完全不透明的。

android中颜色的四种形式:

#RGB、#ARGB、#RRGGBB、#AARRGGBB

定义字符串、颜色、尺寸资源文件:

 

字符串资源文件:

定义颜色资源文件:

 

定义尺寸资源文件:

资源的使用通过前面说的办法使用。

android也允许使用资源文件来定义boolean常量和整形常量:

例如:booleans.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_male">true</bool>
    <bool name="is_big">false</bool>
</resources>

java代码中访问:

Resources resources = getResources();
boolean is_big = resources.getBoolean(R.bool.is_big);

整形常量的类似boolean类型,只是<bool....../>变成了 <integer......>

数组(Array)资源:

资源文件位于/res/values目录下,xml文件的根元素也是<resources....../>,该元素可以包含如下三种子元素:

1、<array....../>:定义普通的数组

2、<string-array....../>:定义字符串数组

3、<integer-array....../>:定义整数数组

java代码中通过如下的方式访问:

[<package_name>.]R.array.array_name

xml文件中如下访问:

@[<package_name>:]array.array_name

Resource也提供了相应的方法访问数组中的数据。

 

字符串数组实例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string-array name="dt">
       <item>one</item>
       <item>two</item>
   </string-array>
</resources>

其他的数组资源的xml文件定义类似字符串数组的定义。

Drawable资源:通常保存在/res/drawable目录下。

图片资源:图片资源是最简单的Drawable资源,我们只要把图片放入/res/drawable-xxx目录下,android SDK就会在编译应用自动加载该图片,并在R资源清单类中生成该资源的引用。

注:android不允许图片资源的文件名中出现大写字母,且不能以数字开头。否则android SDK无法为该图片在R类中生成资源的索引。

StateListDrawable资源:StateListDrawable用于组织多个Drawable对象。当使用StateListDrawable作为目标组件的背景、前景图片时,StateListDrawable对象所显示Drawable对象会随目标组件的改变而自动切换。

定义StateListDrawable对象的XML文件的根元素是<selector....../>,该元素可以包含多个<item....../>元素。

 

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

</selector>

 

LayerDrawable资源:LayerDrawable也可以包含一个Drawable数组,系统将会按这些Drawable对象的数组顺序绘制他们,索引最大的Drawable对象将会被绘制在最上面。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。