Android的基本资源访问

本文详细介绍了Android中字符串、颜色、尺寸、布局、数组、样式资源的定义与使用,以及程序的国际化实现方法。通过创建不同语言的资源文件夹,实现根据不同系统语言显示对应字符串。同时,文章还涵盖了尺寸单位、颜色值表示和样式继承等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串(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

#RRGGBB格式的颜色查询

定义颜色资源文件

红、绿、蓝、纯透明

<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 个子元素。

  1. <array> 子元素:用于定义普通类型的数组
  2. <integer-array> 子元素:用于定义整数数组
  3. <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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值