android各种资源的详细解释
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标签中的"<"须要使用"<" 表示(">"能够直接使用)
使用字符串资源的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)
版权声明:本文博客原创文章,博客,未经同意,不得转载。
android各种资源的详细解释的更多相关文章
- Android中时间戳的详细解释
Android中时间戳的详细解释: (1).定义: 时间戳就是根据当前系统时间生成的一组随机数字. (2).作用: 作为对数据唯一性的一种判断依据.避免了重复修改数据所带来的错误! (3).应用: ( ...
- ANDROID L——Material Design详细解释(UI控制)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- Android slidingmenu详细解释 滑动的优化
Android slidingmenu 详细解释 性能优化 转载请注明: http://blog.csdn.net/aaawqqq 简单介绍 SlidingMenu 是github 上Androi ...
- 34.Android之资源文件res里drawable学习
我们经常看到android工程资源文件res下drawable如ldpi.mdpi.hdpi.xhdpi.xxhdpi文件,今天我们学习了解下. (1)drawable-hdpi里面存放高分辨率的图片 ...
- android关于AndroidManifest.xml详细分析
http://my.eoe.cn/1087692/archive/5927.html 一.关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必 ...
- android AndroidManifest.xml 属性详细解析
一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...
- .htaccess语法之RewriteCond与RewriteRule指令格式详细解释
htaccess语法之RewriteCond与RewriteRule指令格式详细解释 (2012-11-09 18:09:08) 转载▼ 标签: htaccess it 分类: 网络 上文htacc ...
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...
- Android webservice的用法详细讲解
Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...
随机推荐
- HDU 3397 Sequence operation(线段树)
HDU 3397 Sequence operation 题目链接 题意:给定一个01序列,有5种操作 0 a b [a.b]区间置为0 1 a b [a,b]区间置为1 2 a b [a,b]区间0变 ...
- cocos2dx3.2 异步载入和动态载入
半个月没有更新博客,从这个项目開始学习了非常多细节的东西,都不太成系统.可是却是开发上线中必须经历的东西.比方超级玛丽系列(一)中的正确的异步载入,正确的分层.正确的合成和载入plist.及时的移除未 ...
- 使用OVS
创建节点: 需要在组件上引用OVS组件WDR_OVS:引用后需要更改添加节点属性值如下: 布局如下: 在view中也添加ovs组件 新建事件方法: ON_EVENT 代码如下: METHOD on_e ...
- 在程序异常中记录堆栈信息(使用ExWatcher)
在我们编写程序的时候可通过IDE自带的调试环境捕捉到异常(Except)错误,并能查看到相关的信息以便我们修正程序中的问题.但当软件被发布出去后,因为所部署运行的环境与我们的调试环境有很大区别,即使在 ...
- android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过
前两天,公司有一个利用android远程操作sqlserver的项目,对此我是毫无头绪的,但也挺感兴趣的,于是开始上网搜索方法,网上有挺多方法了,发现使用webservice的挺多的,不过我对这些技术 ...
- 使用commons-daemon启动、关闭java程序
系统环境: CentOS 7 X64 JDK1.8 一: 安装jsvc 下载 commons-daemon的源代码包 http://apache.fayea.com//commons/daemon/s ...
- 所有CM_消息的说明
这些CM消息,居然在Delphi的帮助里是没有任何说明的,真是昏倒.意外在高手的书里找到了所有说明,说明如下: Message Constant Value Description cm_Base $ ...
- iOS 5 故事板入门(3)
原文: http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-2 Segues 介绍 是时候在我们的故事板中加入更 ...
- Struts2 学习笔记18 拦截器原理分析
我们来进行一下拦截器的原理分析,从Struts2的源代码开始,然后我们手动创建一个项目进行模拟.(源代码需要下载然后添加好才能看到)我们可以用Debug来读源码. 从doFilter开始执行,流程如图 ...
- 【读书笔记】《未来闪影》罗伯特·J·索耶
真是一本引人入胜的书! 看了不到一半,就有一种置身其中的感觉,要是我也能看到自己二十年后的生活,哪怕只有1分43秒,该是一件多么奇妙的事情.但忧虑也随之而来,如果二十年后我没有成为现在想成为的人,现在 ...