1、字符数组
使用字符串数组资源<string-array>标签定义,在<string-array>包括一些标签<item>数组元素标记。
例如
<?

xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Values</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>

在代码中引用字符串数组的代码例如以下:
String[] plans=getResources().getStringArray(R.array.planets_array);

注意:不能用字符串数据资源设置接收字符串的属性,比如,android:text,由于这样系统会直接将字符串数组资源的ID值
当做文本传给该属性,应该用字符串资源设置那些能够接收字符串数组资源的属性。

2、复数字符串

<?

xml version="1.0" encoding="utf-8"?

>

<resources>

<plurals

name="plural_name">

<item_plurals

quantity=["zero" | "one" | "two" | "few" | "many" | "other"]

>text_string</item>

</plurals>

</resources>

zero 语言须要对数字0进行特殊处理。(比方阿拉伯语)

one 语言须要对类似1的数字进行特殊处理。

(比方英语和其他大多数语言里的1;在俄语里,不论什么以1结尾但不以11结尾的数也属于此类型。)

two 语言须要对类似2的数字进行特殊处理。(比方威尔士语)

few 语言须要对较小数字进行特殊处理(比方捷克语里的2、3、4;或者波兰语里以2、3、4结尾但不是12、13、14的数。)

many 语言须要对较大数字进行特殊处理(比方马耳他语里以11-99结尾的数)

other 语言不须要对数字进行特殊处理。

使用复数字符串资源能够使用getQuantityString方法。该方法有两个重载形式。它们的原型例如以下:
public String getQuantityString(int id, int quantity) throws NotFoundException;
public String getQuantityString(int id, int quantity, Object... formatArgs)throws NotFoundException;

当中id參数表示复数字符串资源的ID,quantity參数表示详细的数字,比如,1相应quantity属性值的"one"。2相应quantity属性值的"two"。formatArgs參数表示复数字符串资源的參数。

// 引用数字为1的复数字符串资源 setTitle(getResources().getQuantityString(
R.plurals.numberOfSongsAvailable, 1));
// 引用数字为other的复数字符串资源,调用时向other资源传递一个參数值(20)
setTitle(getResources().getQuantityString(
R.plurals.numberOfSongsAvailable, 20, 20));


3、在字符串中使用引號
字符串中的值尽管能够随意指定,但遇到特殊符号时。如双引號、单引號,就须要採取特殊的方法进行处理
假设是('),能够使用转义符(\)或使用双引號(")将整个字符串括起来。假设是双引號,能够在双引號前使用转义符(\)。比如:
<!-- 输出This'll work -->
<string name="str1">"This'll work"</string>
<!--输出This 'll also work -->
<string name="str2">This \'ll also work</string>
<!-- 输出"apple" -->
<string name="str3">\"apple\"</string>

4、用占位符格式化字符串
String.format(String,Object..)方法能够格式化带占位符的字符串。

因此。仅仅要在字符串资源中插入占位符就能够
是用String.format方法格式化字符串资源。

format方法要求占位符用%1、%2、。

。。%n表示。

当中第n个占位符于format
方法的n+1个參数值相应。

带占位符的字符串资源
<!-- $s 表示该占位符要求传入字符串, $d 表示该占位符要求传入整数 %后面的整数表示第几个占位符-->
<string name="welcome">hello, %1$s!

youhanv %2$d/%3$d new messages</string>

格式化字符串资源的java代码
String textString=String.format(getResources().getString(R.string.welcome), "hello",18,20);

5、用HTML标签格式化字符串资源
字符串资源支持一些HTML标签。因此。能够直接在字符串资源中使用这些HTML标签格式化字符串。
用HTMl标签格式化的字符串资源
<string name="welcome">Welcome to <b>Android<b/></string>

字符串资源支持例如以下的HTML标签
<b>:粗体字
<i>:斜体字
<u>:带下划线的文字
有时须要同一时候使用HTML标签和占位符格式化字符串,但使用String.format方法格式字符串,会忽略字符串中全部的HTML标签。为了是
format方法能够格式化带HTMl标签的字符,须要使用Html.fromHTML方法先处理一下字符串。比如
<string name="welcome">hello, %1$s!

You have $lt; <b> %2d new messages$lt;</b></string>

注意:因为须要使用Html.formatHTML方法处理字符串,因此,HTMl标签中的"<"须要使用"&lt;" 表示(">"能够直接使用)
使用字符串资源的Java代码
String textString=String.format(getResources().getString(R.string.welcome), "hello",18,20);
CharSequence styledText=Html.fromHtml(text);
假设format 的某个參数值包括HTML的特殊字符串,如"<","&"。能够使用以下的代码先格式化这个參数值,在使用format方法格式化字符串
//username中包括HTML的特殊字符
String escapedUsername=TextUtil.htmlEncode()username;
String textString=String.format(getResources().getString(R.string.welcome),escapedUsername,malCount);
CharSequence styledText=Html.fromHtml(text);

6、值资源
全部放到res/values文件夹中的资源都属于值资源(能够存放在随意的XML文件里)。
1、整数资源
整数资源使用<integer>标签设置。代码例如以下:
<integer name="height">75</integer>
<integer name="width">75</integer>
在资源文件里使用的代码
<TextView
android:id="@+id/text"
android:layout_width="@integer/height"
android:layout_height="@integer/width"
android:layout_alignParentBottom="true"
android:text="@string/str3"
/>
以下是引用整数资源的java代码
int width=getResources.getInteger(R.integer.width);
2、尺寸资源
尺寸资源是由一系列的浮点数组成的资源,这些资源须要在res/values文件夹的资源文件里定义,<dimen>标签用来定义尺寸资源。


<dimen name="size_px">50px</dimen>
<dimen name="size_in">1.5in</dimen>
<dimen name="size_sp">10sp</dimen>
使用java代码获取尺寸资源,这些方法会依据相应的尺寸单位返回与其相应的像素值
float size1=getResources().getDimension(R.dimen.size_in);

假设想直接获取尺寸大小(不转化成像素),能够使用以下的代码
TypedValue outValue=new TypedValue();
//getValue方法的第3个參数假设为true,表示即使资源值引用了另外的资源,系统会通过递归的方法获取终于的资源
getResources().getValue(R.dimen.size_px, outValue, true);
//因为getValue方法并没有直接返回尺寸资源的值,所以须要使用complexToFloat方法进行转换
float value=TypedValue.complexToFloat(outValue.data);
3、颜色资源
颜色资源用于指定颜色值,使用<color>标签设置,代码例如以下
<color name="red">#f00</color>
java代码获代替码
int color=getResources().getColor(R.color.red);
4、ID资源
ID资源实际上就是android:id属性的值,使用<item>标签设置。代码例如以下:
<item type="id" name="button_ok"></item>
<item type="id" name="dialog_exit"></item>
资源文件里引用ID资源的代码例如以下:
<Button android:id="@id/button_ok"/>
通常在设置android:id属性时都会在“@”和“id”之间加一个“+”,代码例如以下:
<Button android:id="@+id/button_ok"/>
这个“+”的含义是假设ID资源不存在,系统会自己主动创建一个ID资源。假设ID资源存在,系统会忽略“+”。


通过这样的策略避免在设置android:id属性值时都要定义ID资源的繁琐方式。


注意:虽然全部可接受ID资源的属性都能够使用“+”,但建议仅仅在android:id属性值使用“+".这是由于其它的属性须要使用已经存在的ID
资源相应的控件,假设使用”+“。当指定的ID资源不存在是系统会自己主动创建一个ID资源,这样虽然ID资源存在了,但并未相应不论什么的控件。可能
会使程序抛出异常,也不会是程序达到预先设定的效果。比如,<RelativeLayout>标签的android:layout_marginLeft属性就必须设置一个
已经与某个控件绑定的ID资源。



5、整数数组资源
整数数组资源用于存储一组整数。用<integer-array>标签设置,代码例如以下:
<integer-array name="bits">
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
</integer-array>
引用整数数组资源的java代码例如以下:
int[] bits=getResources().getIntArray(R.array.bits);

6、类型数组资源
类型数组资源能够将当中资源作为数组存储,因此也能够称为资源数组资源。
<array name="icons">
<item>@drawable/home</item>
</array>
<array name="colos">
<item>#ffff0000</item>
</array>

引用类型数组资源的java代码例如以下:
TypeArray drawable=getResources().obtainTypedArray(R.array.icons);
Drawable drawable=icons.getDrawable(0);

TypeArray color=getResources().obtainTypedArray(R.array.colos);
int color=color.getColor(0,0)





版权声明:本文博客原创文章,博客,未经同意,不得转载。

更多相关文章

  1. 分支和循环(二)(零基础学习C语言)
  2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  3. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  4. Android(安卓)Java(2015-6-18 15:28、2016-1-30 21:18、2016-5-31
  5. Android中文按拼音排序
  6. android 拨号面板
  7. TextUtils的使用
  8. StringUtil
  9. 再谈android studio抽取字符串方法

随机推荐

  1. Talking about Android Process
  2. android 系统编译要求,官方资料
  3. Android(安卓)BroadcastReceiver 简介
  4. Android local manifest
  5. android 设置Button为圆形按钮
  6. 不自动弹出键盘
  7. android中怎么在文字两边划线
  8. android布局实例代码
  9. QR Codes Made Easy In Android
  10. Android Interprocess Communication(一)