Android学习14--Android应用资源
2012-02-13 18:13
190 查看
1、资源的类型
a、无法直接访问的源生资源,保存在assets目录下
b、可通过R资源清单类访问的资源,保存在res目录下
大部分时候提到的Android应用资源时,都是指位于res目录下的应用资源,AndroidSDK会在编译该应用时在R类中为它们创建对应的索引项。
2、资源的类型及存储方式
Android要求在res目录下用不同的子目录保存不同的应用资源,下表显示Android不同资源在/res目录下的存储方式:
3、使用资源
(1)在java代码中使用资源
由于Android SDK会在编译应用时在R类中为/res目录下所有资源创建索引项,因此在java代码中访问资源主要通过R类来完成。期完整的语法格式为:
[<package_name>.]R.<resource_type>.<resource_name>:
<package_name>:指定R类所在包,实际上就是使用全限定类名。当然,如果在java程序中导入R类所在包,就可以省略包名。
<resource_type>:R类中代表不同资源类型的子类,例如string代表字符串资源
<resource_name>:指定资源的名称。该资源名称可能是无后缀的文件名(如图片资源),也可能是XML资源文件中由android:name属性所指定的名称
(2)在XML代码中使用资源
当定义XML资源文件时,其中的XML元素可能需要指定不同的值,这些值就可以设置为已定义的资源项,在XML中使用资源的完整语法格式为:
@[<package_name>:]<resource_type>/<resource_name>:
<package_name>:指定资源类所在应用包,如果引用的资源和当前资源位于同一个包下,则可以省略。
<resource_type>:R类中代表不同资源类型的子类,例如string代表字符串资源
<resource_name>:指定资源的名称。该资源名称可能是无后缀的文件名(如图片资源),也可能是XML资源文件中由android:name属性所指定的名称
4、使用字符串、颜色、尺寸资源
字符串资源、颜色资源、尺寸资源,它们对应的XML文件都位于/res/values目录下,它们默认的文件名,以及在R类中对应的内部类如表
Android允许使用资源文件定义boolean常量,默认名为:/res/values/bools.xml,该文件的根源素也是<resources.../>,根元素内通过<bool.../>子元素定义boolean常量,对应R类中内部类的名称为R.bool
Android允许使用资源文件定义整型常量,默认名为:/res/values/integers.xml,该文件的根源素也是<resources.../>,根元素内通过<integer.../>子元素定义整型常量,对应R类中内部类的名称为R.integer
5、数组(Array)资源
Android采用位于/res/values目录下的arrays.xml文件来定义数组,定义数组时XML资源文件的根目录也是<resources.../>元素,该元素内可包含如下三种子元素:
<array.../>子元素:定义普通类型的数组,例如Drawable数组。
<string-array.../>子元素:定义字符串数组。
<integer-array.../>子元素:定义整数数组。
在java代码中访问形式:[<package_name>.]R.array.array_name
在XML代码中访问形式:@[<package_name>:]array/array_name
为了能在java程序中访问到实际数组,Resources提供了
如下方法:
String[] getStringArray(int id):根据资源文件中字符串数组资源的名称来获取实际的字符串数组。
int[] getIntArray(int id):跟据资源文件中整型数组资源的名称来获取实际的整型数组。
TypedArray obtainTypedArray(int id):跟据资源文件中普通数组资源的名称来获取实际的普通数组。TypedArray代表一个通用类型的数组,该类提供了getXxx(int index)方法来获取指定索引处得数组元素。
a、无法直接访问的源生资源,保存在assets目录下
b、可通过R资源清单类访问的资源,保存在res目录下
大部分时候提到的Android应用资源时,都是指位于res目录下的应用资源,AndroidSDK会在编译该应用时在R类中为它们创建对应的索引项。
2、资源的类型及存储方式
Android要求在res目录下用不同的子目录保存不同的应用资源,下表显示Android不同资源在/res目录下的存储方式:
目录 | 存放的资源 |
/res/anim/ | 存放定义补间动画的XML文件 |
/res/color/ | 存放定义不同状态下颜色列表的XML文件 |
/res/drawable/ | 该目录下存放各种位图文件(如*.png、*.9.png、*.jpg*、.gif)等,除此之外还可是编译成如下各种Drawable对象的XML文件: BitmapDrawable NinePatchDrawable对象 StateListDrawable对象 ShapeDrawable对象 AnimationDrawable对象 Drawable的其它各种子类的对象 |
/res/layout/ | 存放各种用户界面的布局文件 |
/res/menu/ | 存放为应用程序定义各种菜单的资源,包括选项菜单、子菜单、上下文菜单资源 |
/res/raw/ | 该目录下存放任意类型的原生资源。在java代码中通过调用Resource对象的openRawResource(int id)方法获取该资源的二进制输入流。 实际上,如果应用程序使用原生资源,推荐把这些原生资源保存到/assrts目录下,然后在应用程序中使用AssetManager来访问这些资源。 |
/res/values/ | 存放各种简单的XML文件。这些简单值包括字符串值、整数值、颜色值、数组等。 字符串、整数值、颜色值、数组等各种值都是存放在该目录下,而且这些资源文件的根目录都是<resources.../>元素,当我们为该<resource.../>元素添加不同的子元素则代表不同的资源,例如: string/integer/bool子元素:代表添加一个字符串值/整数值/boolean值 color子元素:代表添加一个颜色值 array子元素或string-array、int-array子元素:代表添加一个数组 style子元素:代表添加一个样式 dimen:代表添加一个尺寸 由于各种简单值都可以定义在/res/values/目录下的资源文件中,如果在同一份资源文件中定义各种值,势必增加程序维护的难度。为此,Android建议使用不同的文件来存放不同类型的值: arrays.xml:定义数组资源 colors.xml:定义颜色值资源 dimens.xml:定义尺寸值资源 strings.xml:定义字符串资源 styles.xml:定义样式资源 |
/res/xml/ | 任意的原声XML文件。这些XML文件可在java代码中使用Resources.getXML()访问。 |
3、使用资源
(1)在java代码中使用资源
由于Android SDK会在编译应用时在R类中为/res目录下所有资源创建索引项,因此在java代码中访问资源主要通过R类来完成。期完整的语法格式为:
[<package_name>.]R.<resource_type>.<resource_name>:
<package_name>:指定R类所在包,实际上就是使用全限定类名。当然,如果在java程序中导入R类所在包,就可以省略包名。
<resource_type>:R类中代表不同资源类型的子类,例如string代表字符串资源
<resource_name>:指定资源的名称。该资源名称可能是无后缀的文件名(如图片资源),也可能是XML资源文件中由android:name属性所指定的名称
(2)在XML代码中使用资源
当定义XML资源文件时,其中的XML元素可能需要指定不同的值,这些值就可以设置为已定义的资源项,在XML中使用资源的完整语法格式为:
@[<package_name>:]<resource_type>/<resource_name>:
<package_name>:指定资源类所在应用包,如果引用的资源和当前资源位于同一个包下,则可以省略。
<resource_type>:R类中代表不同资源类型的子类,例如string代表字符串资源
<resource_name>:指定资源的名称。该资源名称可能是无后缀的文件名(如图片资源),也可能是XML资源文件中由android:name属性所指定的名称
4、使用字符串、颜色、尺寸资源
字符串资源、颜色资源、尺寸资源,它们对应的XML文件都位于/res/values目录下,它们默认的文件名,以及在R类中对应的内部类如表
资源类型 | 资源文件的默认名 | 对应于R类中的内部类的名称 |
字符串资源 | /res/values/strings.xml | R.string |
颜色资源 | /res/values/colors.xml | R.color |
尺寸资源 | /res/values/dimens.xml | R.dimen |
Android允许使用资源文件定义整型常量,默认名为:/res/values/integers.xml,该文件的根源素也是<resources.../>,根元素内通过<integer.../>子元素定义整型常量,对应R类中内部类的名称为R.integer
5、数组(Array)资源
Android采用位于/res/values目录下的arrays.xml文件来定义数组,定义数组时XML资源文件的根目录也是<resources.../>元素,该元素内可包含如下三种子元素:
<array.../>子元素:定义普通类型的数组,例如Drawable数组。
<string-array.../>子元素:定义字符串数组。
<integer-array.../>子元素:定义整数数组。
在java代码中访问形式:[<package_name>.]R.array.array_name
在XML代码中访问形式:@[<package_name>:]array/array_name
为了能在java程序中访问到实际数组,Resources提供了
如下方法:
String[] getStringArray(int id):根据资源文件中字符串数组资源的名称来获取实际的字符串数组。
int[] getIntArray(int id):跟据资源文件中整型数组资源的名称来获取实际的整型数组。
TypedArray obtainTypedArray(int id):跟据资源文件中普通数组资源的名称来获取实际的普通数组。TypedArray代表一个通用类型的数组,该类提供了getXxx(int index)方法来获取指定索引处得数组元素。
相关文章推荐
- 【资源汇总】Android应用解决方案全攻略
- Android移动应用基础学习交流-初学体会
- Android应用开发学习笔记之图片切换器
- Android应用开发学习笔记之画廊视图
- Android应用开发学习笔记之多线程与Handler消息处理机制
- Android动态资源加载原理和应用
- Android应用开发相关下载资源(2014/12/14更新)
- Android 学习资源链接
- 深入学习android之AlarmManager|后台应用不应做Android待机电池杀手
- 【学习之道】 Android学习资源整理
- Android开发者应该深入学习的10个开源应用项目
- Android基础学习总结(二)——六步轻松搞定RecyclerView简单应用
- Android 打造自己的个性化应用(二):应用程序内置资源实现换肤功能
- Android 你应该知道的学习资源 进阶之路贵在坚持
- Android资源管理框架(Asset Manager)简要介绍和学习计划
- Android 你应该知道的学习资源 进阶之路贵在坚持
- Android应用开发学习笔记之状态栏通知
- Android应用开发相关下载资源(2014/12/14更新)
- react native 学习笔记----将react native嵌入到Android原生应用
- Android应用资源总结七:attrs中format详解