Android关键资源


1.字符串数组

    可以指定一个字符串数组作为/res/values子目录下所有文件中的资源。可以使用一个名为string-array的XML节点,此节点是resources的子节点,就想string资源节点一样。

eg:

<resources...>  

<!-- Other resources -->

<string-array name = "test_array">  

<item>one</item>      

<item>two</item>  

<item>three</item>  

</string-array>  

</resources> 

    拥有此字符串数组资源定义后,可以利用Java代码获取此数组:

Resources res = your-activity.getResources();//your-activity是自己写的Activity

String str[] = res.getStringArray(R.array.test_array);

for( String s : str ){

Log.d( “example”, s );

}


2.复数资源

    资源plurals是一组字符串。这些字符串是表示数量的各种方式。

eg:

<resources...>

<plurals name = "eggs_in_a_nest_text">

<item quantity="one">There is 1 egg</item>

<item quantity="other">There are %d eggs</item>

</plurals>

</resources>

    基本原则,对于en(英语)语言环境,仅有的两个值可能是“one”和“other”。所有其他语言也是如此。除了cs(捷克语),对于cs,可能的值为“one”(表示1)、“few”(表示2~4)、“other”(表示其他值)。

    给定一个数量,可以使用Java代码来使用此复数打印一个字符串。getQuantityString()方法的第一个参数是复数资源id,第二个参数选择要使用的字符串。当数量值为1时,按样使用该字符串。当值不为1时,必须提供第三个参数,它的值放在%d所在的位置。如果在复数资源中使用一种格式化字符串,必须始终拥有至少3个参数。

Resources res = your-activity.getResources();

//getQuantityString()的第一个参数是复数ID,

//第二个是选择要使用的字符串,为1时,按原样使用该字符串,不为1时,必须提供第三个参数,它的值放在%d的位置

String s1 = res.getQuantityString(R.plurals.eggs_in_a_nest_text,0,0);

String s2 = res.getQuantityString(R.plurals.eggs_in_a_nest_text,1,1);


3.字符串资源的更多信息

(1)定义字符串的XML语法

<resources>

<string name="simple_string">simple string</string>

<string name="quoted_string">"quoted 'xyz' string"</string>

<string name="double_quoted_string">"\double quotes\"</string>

<string name="java_format_string">

hello %2$s Java format string. %1$s again</string>

<string name="tagged_string">

Hello <b><i>Slanted Android</i></b>, You are bold.

</string>

</resources>

    这个XML字符串资源文件需要位于/res/values子目录中,此文件的名称可以任意指定。注:引用字符串需要被转义,或者放在替换引号中。字符串定义支持标准的Java字符串格式序列。Android支持子XML元素,如<b>、<i>、<string>节点下其他简单的文本格式HTML。在文本视图中绘制之前,可以使用这种复合HTML字符串来设置文本样式。

(2)在Java代码中使用字符串资源

//Read a simple string set it in a text view

String simpleString = activity.getString(R.string.simple_string);

textView.setText(simpleString);

//Read a Java format string

String javaFormatString = activity.getString(R.string.java_format_string);

String substitutedString = String.format(javaFormatString,”Hello”,”Android”);

textView.setText(substitutedString);

//Read a html string from the resource and set it in a text view

String htmlTaggedString = activity.getString(R.string.tagged_string);

Spanned textSpan = android.text.Html.formHtml(htmlTaggedString);

textView.setText(textSpan);

    将字符串定义为资源之后,可以在视图上直接设置它们。

(3)在XML中使用字符串资源

<TextView android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:text="@string/tagged_string"/>

    TextView自动确定此字符串是HTML字符串,并相应地遵守它的格式。


4.颜色资源

    也可以使用引用标识符好简洁引用颜色,这样,Android就能够本地化颜色并应用主题。在资源文件中定义并标识了颜色以后,则可以在Java代码中通过它们的ID来访问它们。

(1)定义颜色资源的XML语法

<resources>

<color name="red">#f00</color>

<color name="blue"#0000ff</color>

<color name="green">#f0f0</color>

<color name="main_back_ground_color">#ffffff00</color>

</resources>

代码项需要包含在/res/values子目录下的一个文件中,该文件的名称可以任意指定。

(2)Java代码中的颜色资源

int mainBackGroundColor = activity.getResources.getColor(R.color.main_back_ground_color);

(3)在视图定义中使用颜色

<TextView android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textColor="@color/red"

android:text="Sample Text to Show Red Color"/>


5.尺寸资源

    像素、英寸和磅值都是可在XML布局或者Java代码中使用的尺寸。可以使用这些尺寸资源来本地化Android UI和设置它的样式,无须更改源代码。

(1)定义尺寸资源的XML语法

<resources>

<dimen name="mysize_in_pixels">1px</dimen>

<dimen name="mysize_in_dp">5dp</dimen>

<dimen name="medium_size">100sp</dimen>

</resources>

可以采用以下任何单位来指定尺寸:

§ px:像素;

§ in:英寸;

§ mm: 毫米;

§ pt: 磅;

§ dp:与密度无关的像素,基于160dpi(每英寸的像素数)屏幕(尺寸适应屏幕密度);

§ sp:与比例无关的像素(这种支持用户调整大小,适合在字体中使用)。

(2)在Java中使用尺寸资源

在Java中,需要访问Resources对象实例来检索尺寸。为此,可以在Activity对象上调用getResources。有了Resources对象后,就可以告诉它使用尺寸来找到该尺寸。

float dimen = activity.getResources().getDimension(R.dimen.mysize_in_pixels);

(3)在XML中使用尺寸资源

<TextView android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="@dimen/medium_size"/>


6.图像资源

    Android会为/res/drawable子目录中的图像文件生成资源ID。支持的图像类型包括.gif、.jpg和.png。此目录中的每个图像文件都会根据其基本文件名生成唯一的ID。如,如果图像文件名为sample_image.jpg,那么生成的资源ID将为R.drawable.sample_image

(1)在XML中使用图像

<Button android:id=”@+id/button1”

    android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="Dial"

android:background=”@drawable/sample_image” />

(2)在Java中使用图像资源

BitmapDrawble d = activity.getResources().getDrawable(R.drawable.sample_image);

button.setBackgroundDrawable(d);

button.setBackgroundResource(R.drawable.sample);

    Android支持一种特殊的图像类型——可拉伸图像。这是一种.png文件,可以将图像中某些部分指定为静态或可拉伸。Android提供了Draw 9-patch工具来指定这些区域。获得了.png图像文件之后,可以将它用作其他图像。当按钮必须拉伸自身以容纳文本时,将。Png图像文件用做此类按钮的背景将会非常方便。


7.色图资源

    在Android中,图像是一种图形对象资源。Android支持另一种称为“色图”的图形对象资源,它实际上是一个彩色的矩形。

(1)定义色图资源的XML语法

要定义一种彩色矩形,可以在/res/values子目录中的任何XML中使用节点名drawable定义一个XML元素。

<resources>

<drawable name="red_rectangle">#f00</drawable>

<drawable name="red_rectangle">#f0f0</drawable>

</resources>

(2)在Java代码中使用色图资源

ColorDrawable redDrawable = (ColorDrawable)activity.getResources().getDrawable(R.drawable.red_rectangle);

textView.setBackgroundDrawable(redDrawable);

(3)在XML代码中使用色图资源

<TextView android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textAlign="center"

android:background=”@drawable/red_rectangle” />

(4)定义圆角矩形

要在Drawable中实现圆角,可以使用<shape>标记。但是,此标记需要单独包含在/res/values目录下的一个文件夹中。

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="#f0600000"/>

<stroke android:width="3dp" color="#ffff8080"/>

<corners android:radius="13dp"/>

<padding android:left="10dp" android:top="10dp"

<android:right="10dp" android:bottom="10dp"/>

</shape>

(5)在Java代码中使用图形对象

GradientDrawable roundedRectangle = (GradientDrawable)activity.getResources().getDrawable(R.drawable.my_rounded_rectangle);

textView.setBackgroundDrawable(roundedRectangle);

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值