一. Android资源文件简介



1. Android应用资源的作用


(1) Android项目中文件分类


在Android工程中, 文件主要分为下面几类: 界面布局文件, Java src源文件, 资源文件;

--界面布局文件: 在res/layout-? 目录下定义, 用于定义Android中界面的显示样式;

--Java源码文件: Android程序的逻辑实现, 程序主体;

--资源文件: 各种XML文件, 可以定义图片等资源, 以及各种图片, 音频, 视频, 3d模型等资源;


(2) 资源文件作用


魔法数值: 在程序开发过程成, 需要用到很多常数, 如果在程序中直接使用这些数字, 给源码阅读和维护带来很多麻烦, 在重构领域我们将这些数值成为 Magical Number;


改进魔法数值: 为了改进魔法数值分散在程序各个地方, 可以专门定义存储魔法数值的接口, 在这些接口中以常量的形式定义一系列的魔法数值, 这些常量名称都是容易理解的, 如果逻辑复杂的数值可以使用注释进行解析, 这样能大大提高程序的 可读性 和 可维护性;


使用资源存放字符串,数字常量: Android中可以将 字符串 数值 存放到资源文件中, res 目录中可以定义字符串资源(values/string.xml),颜色资源,数组资源,菜单资源等, 在Java代码中可以直接获取这些资源中的值;


2. Android中资源分类详解


(1)Android资源分类


Android中的资源分为两大类: 可直接访问的资源, 无法直接访问的原生资源;

--直接访问资源: 这些资源可以使用 R. 进行访问, 都保存在res目录下, 在编译的时候, 会自动生成R.java 资源索引文件;

--原生资源: 这些资源存放在assets下, 不能使用 R类 进行访问, 只能通过 AssetManager 以二进制流形式读取资源;


(2) Android资源详解


res目录下资源详解:

--res/animator:属性动画的XML文件目录, 属性动画就是定义起始结束, 动做, 重复时间等参数齐全的动画;

--res/anim:补间动画的XML文件目录, 补间动画是只定义 起始 结束帧, 中间的动作由系统进行计算获取动作过程;

--res/color:颜色列表的XML文件目录;

--res/drawable: 存放真实的位图文件, 也可以存放Drawable对象及子类对象的XML文件;

--res/layout: 界面布局文件目录;

--res/menu: 程序中使用的菜单文件目录, 该文件下的XML文件可以应用与 选项菜单, 子菜单, 上下文菜单等;

--res/raw: 存放原生资源, 与assets目录作用相同, 可以通过调用openRawResource(int)方法获取二进制输入流, 与asstes相似, 使用AssetsManager访问这些资源;

--res/value: 存放 字符串. 整数, 颜色, 数组 信息的 XML文件的目录, 这些XML文件资源的根元素是resource;

--res/xml: 原生的XML文件, 可以使用 Resource.getXML()方法进行访问;


res/value目录XML文件<resource>子标签解析:

--string标签: 代表一个字符串;

--integer标签: 代表一个整数值标签;

--bool标签: 代表一个boolean值;

--color标签: 代表一个颜色值;

--array标签: 代表数组;

--string-array标签: 代表字符串数组;

--int-array标签: 代表int数组;

--style标签: 代表样式;

--dimen标签: 代表一个尺寸;


分类资源文件: 如果将所有的资源放到一个XML文件中, 会增加维护难度, 这里将不通类型的资源放到不同的XML文件下;

--arrays.xml: 存放数组资源;

--colors.xml: 存放颜色资源;

--dimens.xml: 存放尺寸值资源;

--strings.xml: 存放字符串资源;

--styles.xml: 存放样式资源;


3. Android中资源的使用


(1) Java代码访问清单资源


在Java代码中通过R类获取资源语法:

[plain] view plain copy
  1. [packageName.]R.resourceType.resourceName

-- pakegeName : R类所在的包名, 即权限定类型, R类可能来自两个包, 一个是程序本身的清单文件, 一个是Android系统存在的清单文件;

--resourceType: R类中代表的资源类型的名称, R.string 字符串资源, R.integer 代表整数资源;

--resourceName: 资源名称, 这个资源名称是对应类型子标签的 name属性的值;


(2) Java代码访问原生资源


Resource类: Android资源访问控制类, 该类提供了大量方法获取实际资源,Resource通过 Context.getResource()方法获得;

--获取清单资源:resource.getString(id), 根据id获取实际资源;

--获取原生资源:resource.getassets(), 获取AssetManager对象;

[java] view plain copy
  1. //获取Resource资源,这个方法在Activity中执行
  2. Resourcesresources=getResources();
  3. //获取字符串资源
  4. Stringhello=resources.getString(R.string.hello_world);
  5. //获取图片资源
  6. Drawableluncher=resources.getDrawable(R.drawable.ic_launcher);

(3) XML文件中使用资源


在XML文件中需要引用其它XML文件中的值, 语法格式为:

[html] view plain copy
  1. @[packageName:]resourceType/resourceName

-- packageName : 资源类型所在的包, 如果被引用资源 与 本XML文件在同一个包下, 可以省略包名;

--resourceType: 资源类型, 例如 layout, drawable, strings等;

--resourceName: 资源名称, 资源所在的XML文件中元素的 android:name 属性, 或者 是无后缀的文件名, 例如图片, 布局文件等;


示例:

--源文件:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">ResourceTest</string>
  4. <stringname="action_settings">Settings</string>
  5. <stringname="hello_world">Helloworld!</string>
  6. <colorname="red">#FF4000</color>
  7. </resources>

-- 引用文件 :

[html] view plain copy
  1. <TextView
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:text="@string/hello_world"
  5. android:textColor="@color/red"/>


二. Android 字符串 颜色 尺寸资源



1. 字符串 颜色 尺寸资源文件简介


(1) 几种资源的目录引用名称


字符串资源:

--默认目录: /res/values/strings.xml;

--引用方式: R.string.xxx ;


颜色资源:

--默认目录: /res/values/colors.xml;

--引用方式: R.color.xxx ;


尺寸资源:

--默认目录: /res/values/dimens.xml;

--引用方式: R.dimens.xxx ;


(2) 颜色定义方式


三原色: 白光 可以分解为 红, 绿, 蓝 三种颜色的光, 红绿蓝都是最大值的时候就是白色, 三种值相等, 但不是最大值是灰色, 如果其中一种或两种值比较大, 就会产生各种颜色的彩色;


颜色表示: 颜色通过红(red) 绿(green) 蓝(blue)三种颜色, 以及透明度(alpha)来表示的;

--颜色开头: 颜色值总是以 # 开头;

--无透明度: 如果没有 alpha 值, 默认完全不透明;


颜色定义形式:

--#RGB: 红 绿 蓝 三原色值, 每个值分16个等级, 最小为0, 最大为f;

--#ARGB: 透明度 红 绿 蓝 值, 每个值分16个等级, 最小为0, 最大为f;

--#RRGGBB: 红 绿 蓝 三原色值, 每个值分 256个等级, 最小为0, 最大为ff;

--#AARRGGBB: 透明度 红 绿 蓝 值, 每个值分 256个等级, 最小为0, 最大为ff;



2. 字符串 颜色 尺寸 XML文件定义


(1) 字符串资源文件


字符串资源文件信息:

--资源位置: /res/values 目录下;

--根元素: <resource>是根元素;

--子元素: <color />;

--name属性: 指定变量名称;

--标签文本: 标签文本就是字符串信息;


示例:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">ResourceTest</string>
  4. <stringname="action_settings">Settings</string>
  5. <stringname="hello_world">Helloworld!</string>
  6. </resources>


(2) 颜色资源文件


颜色资源文件信息:

--位置: /res/values目录;

--根元素: <resource>;

--子元素: <string>;

--name属性: 颜色资源名称;

--标签文本: 颜色值;


示例:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <colorname="red">#FF4000</color>
  4. <colorname="black">#120A2A</color>
  5. <colorname="green">#00FF00</color>
  6. <colorname="yellow">#FFFF00</color>
  7. </resources>


(3) 尺寸资源文件


尺寸资源信息:

--位置: /res/values目录;

--根元素: <resource>;

--子元素: <dimen>;

--name属性: 尺寸名称;

--标签文本: 尺寸值;


示例:

[html] view plain copy
  1. <resources>
  2. <!--Defaultscreenmargins,pertheAndroidDesignguidelines.-->
  3. <dimenname="activity_horizontal_margin">16dp</dimen>
  4. <dimenname="activity_vertical_margin">16dp</dimen>
  5. </resources>


3. 使用字符串 颜色 尺寸资源


(1) 使用示例


颜色资源:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <colorname="red">#FF4000</color>
  4. <colorname="black">#120A2A</color>
  5. <colorname="green">#00FF00</color>
  6. <colorname="yellow">#FFFF00</color>
  7. </resources>

尺寸资源 :

[html] view plain copy
  1. <resources>
  2. <!--Defaultscreenmargins,pertheAndroidDesignguidelines.-->
  3. <dimenname="activity_horizontal_margin">16dp</dimen>
  4. <dimenname="activity_vertical_margin">16dp</dimen>
  5. </resources>

字符串资源 :

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">ResourceTest</string>
  4. <stringname="action_settings">Settings</string>
  5. <stringname="hello_world">Helloworld!</string>
  6. </resources>

布局文件 : 在这个文件中调用上面三个资源文件内容;

[html] view plain copy
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity">
  10. <TextView
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:text="@string/hello_world"
  14. android:textColor="@color/green"/>
  15. </RelativeLayout>


效果图 :

Android资源文件简介_第1张图片






三. 整数 布尔值 资源文件


1. 整数资源


整型资源:

-- XML文件常用路径: /res/values/integer.xml;

-- 根标签: <resource> ;

-- 子元素: <integer> ;


整型资源调用 :

-- XML中调用: @ [packageName] : integer / integerName ;

-- Java中调用: [packageName . ]R.integer.integerName ;


示例: /res/values/integer.xml ;

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <integername="size_1">10</integer>
  4. <integername="size_2">20</integer>
  5. </resources>

Java代码 :

[java] view plain copy
  1. packageshuliang.han.resourcetest;
  2. importandroid.app.Activity;
  3. importandroid.content.res.Resources;
  4. importandroid.os.Bundle;
  5. publicclassMainActivityextendsActivity{
  6. @Override
  7. protectedvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. //获取Resource资源,这个方法在Activity中执行
  11. Resourcesresources=getResources();
  12. intsize_1=resources.getInteger(R.integer.size_1);
  13. System.out.println(size_1);
  14. }
  15. }

执行结果:

[plain] view plain copy
  1. 02-2620:12:51.586:I/System.out(18744):10


2. 布尔资源


布尔资源信息:

--常用文件: /res/values/bool.xml 文件;

--跟标签: <resource>;

--子标签: <bool> ;


布尔资源调用:

--XML文件中调用: @ [packageName :] bool / boolName ;

--Java代码中调用: [packageName . ]R.bool.boolName ;


示例:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <boolname="is_true">true</bool>
  4. <boolname="is_false">false</bool>
  5. </resources>

Java代码 :

[java] view plain copy
  1. packageshuliang.han.resourcetest;
  2. importandroid.app.Activity;
  3. importandroid.content.res.Resources;
  4. importandroid.os.Bundle;
  5. publicclassMainActivityextendsActivity{
  6. @Override
  7. protectedvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. //获取Resource资源,这个方法在Activity中执行
  11. Resourcesresources=getResources();
  12. booleanis_true=resources.getBoolean(R.bool.is_true);
  13. System.out.println(is_true);
  14. }
  15. }

执行结果 :

[plain] view plain copy
  1. 02-2620:27:15.676:I/System.out(31060):true



四. 数组资源



1. 数组资源简介


资源数组文件: 通常将数组定义在 /res/values/arrays.xml文件中;

--根标签: <resources> ;

--子标签: <array>, <string-array>, <integer-array>;


资源数组类型: 数组的资源的跟标签都是 <resources>, 不同类型的数组的子元素不同;

--普通类型数组: 使用<array>作为子元素标签;

--字符串数组: 使用<string-array>作为子元素标签;

--整数数组: 使用<integer-array>作为子元素标签;


XML文件中调用数组资源: @ [packageName :] array/arrayName ;


Java文件中调用数组资源: [packageName . ]R.array.arrayName ;

--获取实际普通数组: TypeArray obtainTypedArray(int id), 根据普通数组资源名称获取实际普通数组, TypeArray类提供了getXxx(int index)方法获取指定索引的元素;

--获取字符串数组: String[] getStringArray(int id), 根据字符串数组资源名称获取字符串数组;

--获取整数数组: int[] getIntArray(int id), 根据整数数组资源名称获取实际的整数数组;



2. 实际案例


GitHub地址:

--HTTP:https://github.com/han1202012/ResourceTest.git

--SSH:git@github.com:han1202012/ResourceTest.git


数组资源文件:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <arrayname="color_array">
  4. <item>@color/black</item>
  5. <item>@color/green</item>
  6. <item>@color/red</item>
  7. <item>@color/yellow</item>
  8. </array>
  9. <string-arrayname="string_array">
  10. <item>三星</item>
  11. <item>小米</item>
  12. <item>苹果</item>
  13. </string-array>
  14. <integer-arrayname="integer_array">
  15. <item>1</item>
  16. <item>2</item>
  17. <item>3</item>
  18. <item>4</item>
  19. </integer-array>
  20. </resources>

布局文件 :

[html] view plain copy
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity">
  10. <ListView
  11. android:id="@+id/lv"
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"/>
  14. </RelativeLayout>

Java代码 :

[java] view plain copy
  1. packageshuliang.han.resourcetest;
  2. importandroid.app.Activity;
  3. importandroid.content.res.Resources;
  4. importandroid.content.res.TypedArray;
  5. importandroid.os.Bundle;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup;
  8. importandroid.widget.BaseAdapter;
  9. importandroid.widget.ListView;
  10. importandroid.widget.TextView;
  11. publicclassMainActivityextendsActivity{
  12. privateString[]array_string;
  13. privateint[]array_int;
  14. privateTypedArraycolors;
  15. privateListViewlistView;
  16. privateResourcesres;
  17. @Override
  18. protectedvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. //获取resource对象
  22. res=getResources();
  23. //获取字符串资源
  24. array_string=res.getStringArray(R.array.string_array);
  25. //获取整数数组资源
  26. array_int=res.getIntArray(R.array.integer_array);
  27. //获取颜色资源
  28. colors=res.obtainTypedArray(R.array.color_array);
  29. listView=(ListView)findViewById(R.id.lv);
  30. listView.setAdapter(newMyBaseAdapter());
  31. }
  32. /*
  33. *ListView适配器
  34. */
  35. classMyBaseAdapterextendsBaseAdapter{
  36. @Override
  37. publicintgetCount(){
  38. returnarray_string.length;
  39. }
  40. @Override
  41. publicObjectgetItem(intposition){
  42. returnarray_string[position];
  43. }
  44. @Override
  45. publiclonggetItemId(intposition){
  46. returnposition;
  47. }
  48. @Override
  49. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  50. //创建TextView,并设置宽高
  51. TextViewtextView=newTextView(getApplicationContext());
  52. textView.setHeight((int)res.getDimension(R.dimen.tv_height));
  53. textView.setWidth((int)res.getDimension(R.dimen.tv_width));
  54. //为TextView设置文本
  55. textView.setText(array_int[position]+"."+array_string[position]);
  56. //设置TextView的背景字体
  57. textView.setBackgroundDrawable(colors.getDrawable(position));
  58. textView.setTextSize(20);
  59. returntextView;
  60. }
  61. }
  62. }

效果图 :

Android资源文件简介_第2张图片


.

作者:万境绝尘

转载请注明出处:http://blog.csdn.net/shulianghan/article/details/19913755

.





一. Android资源文件简介



1. Android应用资源的作用


(1) Android项目中文件分类


在Android工程中, 文件主要分为下面几类: 界面布局文件, Java src源文件, 资源文件;

--界面布局文件: 在res/layout-? 目录下定义, 用于定义Android中界面的显示样式;

--Java源码文件: Android程序的逻辑实现, 程序主体;

--资源文件: 各种XML文件, 可以定义图片等资源, 以及各种图片, 音频, 视频, 3d模型等资源;


(2) 资源文件作用


魔法数值: 在程序开发过程成, 需要用到很多常数, 如果在程序中直接使用这些数字, 给源码阅读和维护带来很多麻烦, 在重构领域我们将这些数值成为 Magical Number;


改进魔法数值: 为了改进魔法数值分散在程序各个地方, 可以专门定义存储魔法数值的接口, 在这些接口中以常量的形式定义一系列的魔法数值, 这些常量名称都是容易理解的, 如果逻辑复杂的数值可以使用注释进行解析, 这样能大大提高程序的 可读性 和 可维护性;


使用资源存放字符串,数字常量: Android中可以将 字符串 数值 存放到资源文件中, res 目录中可以定义字符串资源(values/string.xml),颜色资源,数组资源,菜单资源等, 在Java代码中可以直接获取这些资源中的值;


2. Android中资源分类详解


(1)Android资源分类


Android中的资源分为两大类: 可直接访问的资源, 无法直接访问的原生资源;

--直接访问资源: 这些资源可以使用 R. 进行访问, 都保存在res目录下, 在编译的时候, 会自动生成R.java 资源索引文件;

--原生资源: 这些资源存放在assets下, 不能使用 R类 进行访问, 只能通过 AssetManager 以二进制流形式读取资源;


(2) Android资源详解


res目录下资源详解:

--res/animator:属性动画的XML文件目录, 属性动画就是定义起始结束, 动做, 重复时间等参数齐全的动画;

--res/anim:补间动画的XML文件目录, 补间动画是只定义 起始 结束帧, 中间的动作由系统进行计算获取动作过程;

--res/color:颜色列表的XML文件目录;

--res/drawable: 存放真实的位图文件, 也可以存放Drawable对象及子类对象的XML文件;

--res/layout: 界面布局文件目录;

--res/menu: 程序中使用的菜单文件目录, 该文件下的XML文件可以应用与 选项菜单, 子菜单, 上下文菜单等;

--res/raw: 存放原生资源, 与assets目录作用相同, 可以通过调用openRawResource(int)方法获取二进制输入流, 与asstes相似, 使用AssetsManager访问这些资源;

--res/value: 存放 字符串. 整数, 颜色, 数组 信息的 XML文件的目录, 这些XML文件资源的根元素是resource;

--res/xml: 原生的XML文件, 可以使用 Resource.getXML()方法进行访问;


res/value目录XML文件<resource>子标签解析:

--string标签: 代表一个字符串;

--integer标签: 代表一个整数值标签;

--bool标签: 代表一个boolean值;

--color标签: 代表一个颜色值;

--array标签: 代表数组;

--string-array标签: 代表字符串数组;

--int-array标签: 代表int数组;

--style标签: 代表样式;

--dimen标签: 代表一个尺寸;


分类资源文件: 如果将所有的资源放到一个XML文件中, 会增加维护难度, 这里将不通类型的资源放到不同的XML文件下;

--arrays.xml: 存放数组资源;

--colors.xml: 存放颜色资源;

--dimens.xml: 存放尺寸值资源;

--strings.xml: 存放字符串资源;

--styles.xml: 存放样式资源;


3. Android中资源的使用


(1) Java代码访问清单资源


在Java代码中通过R类获取资源语法:

[plain] view plain copy
  1. [packageName.]R.resourceType.resourceName

-- pakegeName: R类所在的包名, 即权限定类型, R类可能来自两个包, 一个是程序本身的清单文件, 一个是Android系统存在的清单文件;

--resourceType: R类中代表的资源类型的名称, R.string 字符串资源, R.integer 代表整数资源;

--resourceName: 资源名称, 这个资源名称是对应类型子标签的 name属性的值;


(2) Java代码访问原生资源


Resource类: Android资源访问控制类, 该类提供了大量方法获取实际资源,Resource通过 Context.getResource()方法获得;

--获取清单资源:resource.getString(id), 根据id获取实际资源;

--获取原生资源:resource.getassets(), 获取AssetManager对象;

[java] view plain copy
  1. //获取Resource资源,这个方法在Activity中执行
  2. Resourcesresources=getResources();
  3. //获取字符串资源
  4. Stringhello=resources.getString(R.string.hello_world);
  5. //获取图片资源
  6. Drawableluncher=resources.getDrawable(R.drawable.ic_launcher);

(3) XML文件中使用资源


在XML文件中需要引用其它XML文件中的值, 语法格式为:

[html] view plain copy
  1. @[packageName:]resourceType/resourceName

-- packageName: 资源类型所在的包, 如果被引用资源 与 本XML文件在同一个包下, 可以省略包名;

--resourceType: 资源类型, 例如 layout, drawable, strings等;

--resourceName: 资源名称, 资源所在的XML文件中元素的 android:name 属性, 或者 是无后缀的文件名, 例如图片, 布局文件等;


示例:

--源文件:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">ResourceTest</string>
  4. <stringname="action_settings">Settings</string>
  5. <stringname="hello_world">Helloworld!</string>
  6. <colorname="red">#FF4000</color>
  7. </resources>

-- 引用文件:

[html] view plain copy
  1. <TextView
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:text="@string/hello_world"
  5. android:textColor="@color/red"/>


二. Android 字符串 颜色 尺寸资源



1. 字符串 颜色 尺寸资源文件简介


(1) 几种资源的目录引用名称


字符串资源:

--默认目录: /res/values/strings.xml;

--引用方式: R.string.xxx ;


颜色资源:

--默认目录: /res/values/colors.xml;

--引用方式: R.color.xxx ;


尺寸资源:

--默认目录: /res/values/dimens.xml;

--引用方式: R.dimens.xxx ;


(2) 颜色定义方式


三原色: 白光 可以分解为 红, 绿, 蓝 三种颜色的光, 红绿蓝都是最大值的时候就是白色, 三种值相等, 但不是最大值是灰色, 如果其中一种或两种值比较大, 就会产生各种颜色的彩色;


颜色表示: 颜色通过红(red) 绿(green) 蓝(blue)三种颜色, 以及透明度(alpha)来表示的;

--颜色开头: 颜色值总是以 # 开头;

--无透明度: 如果没有 alpha 值, 默认完全不透明;


颜色定义形式:

--#RGB: 红 绿 蓝 三原色值, 每个值分16个等级, 最小为0, 最大为f;

--#ARGB: 透明度 红 绿 蓝 值, 每个值分16个等级, 最小为0, 最大为f;

--#RRGGBB: 红 绿 蓝 三原色值, 每个值分 256个等级, 最小为0, 最大为ff;

--#AARRGGBB: 透明度 红 绿 蓝 值, 每个值分 256个等级, 最小为0, 最大为ff;



2. 字符串 颜色 尺寸 XML文件定义


(1) 字符串资源文件


字符串资源文件信息:

--资源位置: /res/values 目录下;

--根元素: <resource>是根元素;

--子元素: <color />;

--name属性: 指定变量名称;

--标签文本: 标签文本就是字符串信息;


示例:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">ResourceTest</string>
  4. <stringname="action_settings">Settings</string>
  5. <stringname="hello_world">Helloworld!</string>
  6. </resources>


(2) 颜色资源文件


颜色资源文件信息:

--位置: /res/values目录;

--根元素: <resource>;

--子元素: <string>;

--name属性: 颜色资源名称;

--标签文本: 颜色值;


示例:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <colorname="red">#FF4000</color>
  4. <colorname="black">#120A2A</color>
  5. <colorname="green">#00FF00</color>
  6. <colorname="yellow">#FFFF00</color>
  7. </resources>


(3) 尺寸资源文件


尺寸资源信息:

--位置: /res/values目录;

--根元素: <resource>;

--子元素: <dimen>;

--name属性: 尺寸名称;

--标签文本: 尺寸值;


示例:

[html] view plain copy
  1. <resources>
  2. <!--Defaultscreenmargins,pertheAndroidDesignguidelines.-->
  3. <dimenname="activity_horizontal_margin">16dp</dimen>
  4. <dimenname="activity_vertical_margin">16dp</dimen>
  5. </resources>


3. 使用字符串 颜色 尺寸资源


(1) 使用示例


颜色资源:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <colorname="red">#FF4000</color>
  4. <colorname="black">#120A2A</color>
  5. <colorname="green">#00FF00</color>
  6. <colorname="yellow">#FFFF00</color>
  7. </resources>

尺寸资源:

[html] view plain copy
  1. <resources>
  2. <!--Defaultscreenmargins,pertheAndroidDesignguidelines.-->
  3. <dimenname="activity_horizontal_margin">16dp</dimen>
  4. <dimenname="activity_vertical_margin">16dp</dimen>
  5. </resources>

字符串资源:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">ResourceTest</string>
  4. <stringname="action_settings">Settings</string>
  5. <stringname="hello_world">Helloworld!</string>
  6. </resources>

布局文件: 在这个文件中调用上面三个资源文件内容;

[html] view plain copy
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity">
  10. <TextView
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:text="@string/hello_world"
  14. android:textColor="@color/green"/>
  15. </RelativeLayout>


效果图:

Android资源文件简介_第3张图片






三. 整数 布尔值 资源文件


1. 整数资源


整型资源:

-- XML文件常用路径: /res/values/integer.xml;

-- 根标签: <resource> ;

-- 子元素: <integer> ;


整型资源调用 :

-- XML中调用: @ [packageName] : integer / integerName ;

-- Java中调用: [packageName . ]R.integer.integerName ;


示例: /res/values/integer.xml ;

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <integername="size_1">10</integer>
  4. <integername="size_2">20</integer>
  5. </resources>

Java代码:

[java] view plain copy
  1. packageshuliang.han.resourcetest;
  2. importandroid.app.Activity;
  3. importandroid.content.res.Resources;
  4. importandroid.os.Bundle;
  5. publicclassMainActivityextendsActivity{
  6. @Override
  7. protectedvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. //获取Resource资源,这个方法在Activity中执行
  11. Resourcesresources=getResources();
  12. intsize_1=resources.getInteger(R.integer.size_1);
  13. System.out.println(size_1);
  14. }
  15. }

执行结果:

[plain] view plain copy
  1. 02-2620:12:51.586:I/System.out(18744):10


2. 布尔资源


布尔资源信息:

--常用文件: /res/values/bool.xml 文件;

--跟标签: <resource>;

--子标签: <bool> ;


布尔资源调用:

--XML文件中调用: @ [packageName :] bool / boolName ;

--Java代码中调用: [packageName . ]R.bool.boolName ;


示例:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <boolname="is_true">true</bool>
  4. <boolname="is_false">false</bool>
  5. </resources>

Java代码:

[java] view plain copy
  1. packageshuliang.han.resourcetest;
  2. importandroid.app.Activity;
  3. importandroid.content.res.Resources;
  4. importandroid.os.Bundle;
  5. publicclassMainActivityextendsActivity{
  6. @Override
  7. protectedvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. //获取Resource资源,这个方法在Activity中执行
  11. Resourcesresources=getResources();
  12. booleanis_true=resources.getBoolean(R.bool.is_true);
  13. System.out.println(is_true);
  14. }
  15. }

执行结果:

[plain] view plain copy
  1. 02-2620:27:15.676:I/System.out(31060):true



四. 数组资源



1. 数组资源简介


资源数组文件: 通常将数组定义在 /res/values/arrays.xml文件中;

--根标签: <resources> ;

--子标签: <array>, <string-array>, <integer-array>;


资源数组类型: 数组的资源的跟标签都是 <resources>, 不同类型的数组的子元素不同;

--普通类型数组: 使用<array>作为子元素标签;

--字符串数组: 使用<string-array>作为子元素标签;

--整数数组: 使用<integer-array>作为子元素标签;


XML文件中调用数组资源: @ [packageName :] array/arrayName ;


Java文件中调用数组资源: [packageName . ]R.array.arrayName ;

--获取实际普通数组: TypeArray obtainTypedArray(int id), 根据普通数组资源名称获取实际普通数组, TypeArray类提供了getXxx(int index)方法获取指定索引的元素;

--获取字符串数组: String[] getStringArray(int id), 根据字符串数组资源名称获取字符串数组;

--获取整数数组: int[] getIntArray(int id), 根据整数数组资源名称获取实际的整数数组;



2. 实际案例


GitHub地址:

--HTTP:https://github.com/han1202012/ResourceTest.git

--SSH:git@github.com:han1202012/ResourceTest.git


数组资源文件:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <arrayname="color_array">
  4. <item>@color/black</item>
  5. <item>@color/green</item>
  6. <item>@color/red</item>
  7. <item>@color/yellow</item>
  8. </array>
  9. <string-arrayname="string_array">
  10. <item>三星</item>
  11. <item>小米</item>
  12. <item>苹果</item>
  13. </string-array>
  14. <integer-arrayname="integer_array">
  15. <item>1</item>
  16. <item>2</item>
  17. <item>3</item>
  18. <item>4</item>
  19. </integer-array>
  20. </resources>

布局文件:

[html] view plain copy
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity">
  10. <ListView
  11. android:id="@+id/lv"
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"/>
  14. </RelativeLayout>

Java代码:

[java] view plain copy
  1. packageshuliang.han.resourcetest;
  2. importandroid.app.Activity;
  3. importandroid.content.res.Resources;
  4. importandroid.content.res.TypedArray;
  5. importandroid.os.Bundle;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup;
  8. importandroid.widget.BaseAdapter;
  9. importandroid.widget.ListView;
  10. importandroid.widget.TextView;
  11. publicclassMainActivityextendsActivity{
  12. privateString[]array_string;
  13. privateint[]array_int;
  14. privateTypedArraycolors;
  15. privateListViewlistView;
  16. privateResourcesres;
  17. @Override
  18. protectedvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. //获取resource对象
  22. res=getResources();
  23. //获取字符串资源
  24. array_string=res.getStringArray(R.array.string_array);
  25. //获取整数数组资源
  26. array_int=res.getIntArray(R.array.integer_array);
  27. //获取颜色资源
  28. colors=res.obtainTypedArray(R.array.color_array);
  29. listView=(ListView)findViewById(R.id.lv);
  30. listView.setAdapter(newMyBaseAdapter());
  31. }
  32. /*
  33. *ListView适配器
  34. */
  35. classMyBaseAdapterextendsBaseAdapter{
  36. @Override
  37. publicintgetCount(){
  38. returnarray_string.length;
  39. }
  40. @Override
  41. publicObjectgetItem(intposition){
  42. returnarray_string[position];
  43. }
  44. @Override
  45. publiclonggetItemId(intposition){
  46. returnposition;
  47. }
  48. @Override
  49. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  50. //创建TextView,并设置宽高
  51. TextViewtextView=newTextView(getApplicationContext());
  52. textView.setHeight((int)res.getDimension(R.dimen.tv_height));
  53. textView.setWidth((int)res.getDimension(R.dimen.tv_width));
  54. //为TextView设置文本
  55. textView.setText(array_int[position]+"."+array_string[position]);
  56. //设置TextView的背景字体
  57. textView.setBackgroundDrawable(colors.getDrawable(position));
  58. textView.setTextSize(20);
  59. returntextView;
  60. }
  61. }
  62. }

效果图:

Android资源文件简介_第4张图片

更多相关文章

  1. android 五大布局文件
  2. AndroidManifest配置文件介绍
  3. android根据uri或文件绝对路径获取文件基本信息
  4. Android 打开本地pdf文件,android 加载pdf文件
  5. Android Manifest文件
  6. android 类似QQ 换皮肤 实现思路 apk资源共享
  7. Android 中.aar文件生成方法与用法
  8. Android文件存取

随机推荐

  1. ch020 Android(安卓)SQLite3(第二部分)
  2. Android应用安全之Android平台上的跨应用
  3. Android(安卓)Studio学习之-控件总结
  4. ch028 Android(安卓)断点续传
  5. [Android]发布Sqlite数据库
  6. android:taskAffinity && android:allowT
  7. Android(安卓)ListView 的简单用法
  8. android:descendantFocusability 焦点 父
  9. Android(安卓)Wear带你理解跨设备的Andro
  10. 【魔幻塔防】60关配置文件