字符串(string)资源
定义字符串资源
在 values 文件夹上单击鼠标右键,New→Values Resource File→输入自定义资源文件名称,例如strings
<resources>
<string name="app_name">Cat</string>
</resources>
使用字符串资源
1.在 Java 文件中使用字符串资源的语法格式如下:
getResources().getString(R.string.app_name)
2.在 XML 文件中使用字符串资源的基本语法格式如下:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />
颜色(color)资源
颜色值的定义
在 Android 中,颜色值通过 RGB(红、绿、蓝)色值和一个透明度(Alpha)值表示。它必须以“#”开头,后面用 Alpha-Red-Green-Blue 形式的内容。其中,Alpha 值可以省略,如果省略则表示颜色默认是完全不透明的(在表示透明度时,0表示完全透明,f表示完全不透明)。在通常情况下,颜色值表示方式有如表所示的 4 种形式,可以使用任意一种形式。
颜色格式 | 描述 | 举例 |
#RGB | 使用红、绿、蓝三原色的值来表示颜色,其中,红、绿和蓝采用 0~F来表示 | 要表示红色,可以使用 #F00 |
#ARGB | 使用透明度以及红、绿、蓝三原色来表示颜色,其中,透明度、红、绿和蓝均采用 0~F来表示 | 要表示半透明的红色,可以使用 #6F00 |
#RRGGBB | 使用红、绿、蓝三原色的值来表示颜色,与 #RGB 不同的是,这里的红、绿和蓝使用 00~FF来表示 | 要表示蓝色,可以使用 #0000FF |
#AARRGGBB | 使用透明度以及红、绿、蓝三原色来表示颜色,其中,透明度、红、绿和蓝均采用 00~FF 来表示 | 要表示半透明的绿色,可以使用 #6600FF00 |
定义颜色资源文件
红、绿、蓝、纯透明
<resources>
<color name="red">#FF0000</color>
<color name="light_green">#00FF00</color>
<color name="blue">#0000FF</color>
<color name="transparent">#00XXXXXX</color>
</resources>
使用颜色资源文件
1.通过颜色资源为 TextView 组件设置文字颜色,可以使用下面的代码:
TextView tv=(TextView)findViewById(R.id.title);
tv.setTextColor(getResources().getColor(R.color.title));
2.通过颜色资源为其指定 android:textColor 属性,即设置组件内文字的颜色,代码如下:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/title" />
尺寸(dimen)资源
尺寸资源也是进行 Android 应用开发时比较常用的资源,它通常用于设置文字的大小、组件的间距等。下面对尺寸资源进行详细介绍。
Android 支持的尺寸单位
尺寸单位 | 描述 | 适用于 |
dip 或 dp(设置独立像素) | 一种基于屏幕密度的抽象单位 | 屏幕的清晰度 |
sp(比例像素) | 要用于处理字体的大小,可以根据用户字体大小首选项进行缩放 | 字体大小 |
px(Pixels,像素 ) | 每个 px 对应屏幕上的一个点 | 屏幕横向、纵向的像素个数 |
pt(points,磅) | 屏幕物理长度单位,1 磅为 1/72 英寸 | 设置字体大小(不常用) |
in(Inches,英寸) | 标准长度单位,1 英寸等于 2.54 厘米 | 屏幕对角线长度 |
mm(Millimeters,毫米) | 屏幕物理长度单位 | 屏幕物理长度 |
- dp:在屏幕密度为 160dpi(每英寸 160 点)的显示器上,1dp=1px。随着屏幕密度的改变,dp 与 px的换算也会发生改变。例如,在屏幕密度为 320dpi 的显示器上,1dp=2px
- sp:与 dp 类似,该尺寸单位主要用于字体显示,它可以根据用户对字体大小的首选项进行缩放。因此,字体大小使用 sp 单位可以确保文字按照用户选择的大小显示
使用尺寸资源
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="title">24sp</dimen>
<dimen name="content">14dp</dimen>
</resources>
1.通过尺寸资源为 TextView 组件设置文字大小,可以使用下面的代码:
TextView tv=(TextView)findViewById(R.id.title);
tv.setTextSize(getResources().getDimension(R.dimen.title));
2.通过尺寸资源为其指定 android: textSize 属性,即设置组件内文字的大小,代码如下:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/title" />
布局(layout)资源
在 MainActivity 的 onCreate() 方法中,可以通过下面的代码指定该 Activity 应用的布局文件为 main.xml。
setContentView(R.layout.activity_main);
如果要在一个布局文件 main.xml 中包含另一个布局文件 image.xml,可以在 main.xml文件中使用下面的代码:
<include layout="@layout/image" />
数组(Array)资源
同 Java 一样,Android 中也允许使用数组。但是在 Android 中,不推荐在 Java 文件中定义数组,而是推荐使用数组资源文件来定义数组。下面对数组资源进行详细介绍。
定义数组资源文件
数组资源文件需要放置在 res\values 目录下。在使用 Android Studio 创建 Android 项目后,并没有在 values 目录下自动创建数组资源文件,需要手动创建(例如 arrays.xml)。定义数组时 XML资源文件的根元素是 <resources></resources> 标记,在该元素中可以包括以下 3 个子元素。
- <array> 子元素:用于定义普通类型的数组
- <integer-array> 子元素:用于定义整数数组
- <string-array> 子元素:用于定义字符串数组
要定义一个名称为 listitem.xml 的数组资源文件,并在该文件中添加一个名称为listItem,包括 3 个数组元素的字符串数组,可以使用下面的代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name=”listItem”>
<item>账号管理</item>
<item>手机号码</item>
<item>辅助功能</item>
</string-array>
</resources>
使用数组资源
1.在 Java 文件中使用数组资源的语法格式如下:
String[] arr=getResources().getStringArray(R.array.listItem);
2.在 XML 文件中使用数组资源的基本语法格式如下:
<ListView
android:id="@+id/listView1"
android:entries="@array/listItem"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
样式(Style)资源
有时我们需要为某个类型的组件设置相似的格式,比如字体、颜色、背景色等。若每次都要为该组件指定这些属性,不仅会增加工作量,还不利于项目的后期维护。
在编写 Word 文档的时候,如果为某段文本设置了样式,那么该样式下的所有格式都会应用于这段文本中。Android 的样式与此类似,每种样式都会包含一组格式,一旦为某个组件设置了样式,该样式下的所有格式都会应用于该组件中。
在 Android 中,还支持继承样式的功能,只需要在 <style></style> 标记中使用 parent 属性进行设置。例如,定义一个名称为 basic 的样式,再定义一个名称为 title 的样式,并让该样式继承 basic样式,关键代码如下:
<style name="basic">
<item name="android:textSize">30sp</item>
<item name="android:textColor">#f60</item>
</style>
<style name="title" parent="basic">
<item name="android:padding">10dp</item>
<item name="android:gravity">center</item>
</style>
当一个样式(子样式)继承自另一个样式(父样式)后,如果在该子样式中,出现了与父样式相同的属性,将使用子样式中定义的属性值。
Android程序国际化
国际化的英文单词是 Internationalization,因为该单词较长,将其简称为 I18N,其中,I 是该单词的第一个字母;18 表示中间省略的字母个数; N 是该单词的最后一个字母。Android 程序国际化,是指程序可以根据系统所使用的语言,将界面中的文字翻译成与之对应的语言。这样,可以让程序更加通用。Android可以通过资源文件非常方便地实现程序的国际化。下面将以国际字符串资源为例,介绍如何实现 Android 程序的国际化。
在编写 Android 项目时,通常都是将程序中要使用的字符串资源放置在 res\values 目录下的strings.xml 文件中,为了实现这些字符串资源的国际化,可以在 Android 项目的 res 目录下创建对应于各个语言的资源文件夹(例如,为了让程序兼容简体中文、繁体中文和美式英文,可以分别创建values-ru-rRU、values-ru-rCN、values-ru-rTW, 然后在每个文件夹中创建一个对应的 strings.xml 文件,并在该文件中定义对应语言的字符串即可。这样,当程序运行时,就会自动根据操作系统所使用的语言(需要修改系统语言设置)来显示对应的字符串信息。
注意!在res\values目录中创建的strings.xml文件,为默认使用的字符串资源文件。当在后面创建的资源文件(与各语言对应的资源文件)中没有与系统使用的语言相对应的文件时,将使用该资源文件
简体中文(中国) | values-zh-rCN | 英语(以色列) | values-en-rIL |
繁体中文(台湾) | values-zh-rTW | 英语(南非) | values-en-rZA |
繁体中文(香港) | values-zh-rHK | 英语(印度) | values-en-rIN |
英语(香港) | values-en-rHK | 英语(挪威) | values-en-rNO |
英语(美国) | values-en-rUS | 英语(新加坡) | values-en-rSG |
英语(英国) | values-en-rGB | 英语(新西兰) | values-en-rNZ |
英语(全球) | values-en-rWW | 英语(印度尼西亚) | values-en-rID |
英语(加拿大) | values-en-rCA | 英语(菲律宾) | values-en-rPH |
英语(澳大利亚) | values-en-rAU | 英语(泰国) | values-en-rTH |
英语(爱尔兰) | values-en-rIE | 英语(马来西亚) | values-en-rMY |
英语(芬兰) | values-en-rFI | 英语(阿拉伯) | values-en-rXA |
英语(丹麦) | values-en-rDK | 法语(法国) | values-fr-rFR |
法语(卢森堡) | values-fr-rLU | 法语(瑞士) | values-fr-rCH |
法语(比利时) | values-fr-rBE | 法语(加拿大) | values-fr-rCA |
西班牙(西班牙) | values-es-rES | 西班牙(拉丁美洲) | values-es-rLA |
西班牙(阿根廷) | values-es-rAR | 西班牙(美国) | values-es-rUS |
西班牙(墨西哥) | values-es-rMX | 西班牙(哥伦比亚) | values-es-rCO |
西班牙(智利) | values-es-rCL | 西班牙(波多黎各) | values-es-rPR |
荷兰语(荷兰) | values-nl-rNL | 荷兰语(比利时) | values-nl-rBE |
葡萄牙(葡萄牙) | values-pt-rPT | 葡萄牙(巴西) | values-pt-rBR |
德语(德国) | values-de-rDE | 德语(奥地利) | values-de-rAT |
德语(瑞士) | values-de-rCH | 芬兰语(芬兰) | values-fi-rFI |
丹麦语(丹麦) | values-da-rDK | 希伯来语(以色列) | values-he-rIL |
韩语(韩国) | values-ko-rKR | 日语(日本) | values-ja-rJP |
俄语(俄罗斯) | values-ru-rRU | 意大利语(意大利) | values-it-rIT |
希腊语(希腊) | values-el-rGR | 挪威语(挪威) | values-no-rNO |
匈牙利语(匈牙利) | values-hu-rHU | 土耳其语(土耳其) | values-tr-rTR |
捷克语(捷克共和国) | values-cs-rCZ | 斯洛文尼亚语 | values-sl-rSL |
波兰语(波兰) | values-pl-rPL | 瑞典语(瑞典) | values-sv-rSE |