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标签中的"<"须要使用"&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)

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

时间: 2024-10-12 07:37:25

android各种资源的详细解释的相关文章

Android中Service的详细解释与使用

Android中Service的详细解释与使用: 概念: (1).Service可以说是一个在后台运行的Activity.它不是一个单独的进程,它只需要应用告诉它要在后台做什么就可以了. (2).它要是实现和用户的交互的话需要通过通知栏或者是通过发送广播,UI去接收显示. (3).它的应用十分广泛,尤其是在框架层,应用更多的是对系统服务的调用. 作用: (1).它用于处理一些不干扰用户使用的后台操作.如下载,网络获取.播放音乐,他可以通过INTENT来开启,同时也可以绑定到宿主对象(调用者例如A

Android中时间戳的详细解释

Android中时间戳的详细解释: (1).定义: 时间戳就是根据当前系统时间生成的一组随机数字. (2).作用: 作为对数据唯一性的一种判断依据.避免了重复修改数据所带来的错误! (3).应用: (1).在银行account表中建立时间戳字段timestamp,设定为文本类型varchar. (2).当银行A读取account表中的存款字段时,同时也读取时间戳字段,比如123456. (3).当银行A修改完存款数值后,进行存盘操作时,将先前读取的时间戳123456与当时表中的时间戳进行一次对比

Android中WebView的详细解释

Android中WebView的详细解释: 1. 概念: WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页. 2. 使用方法: (1).实例化WebView组件: A.在Activity中实例化WebView组件.eg: WebView webView = new WebView(this); B.调用WebView的loadUrl()方法,设置WevView要显示的网页.eg: 互联网用:webView.loadUrl("http://

Android客户端请求服务器端的详细解释

Android客户端请求服务器端的详细解释 1. Android客户端与服务器端通信方式: Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式. 2. 解析服务器端返回数据的解释: (1).对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式. (2). JSON(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比

Android中多线程编程(四)AsyncTask类的详细解释(附源码)

Android中多线程编程中AsyncTask类的详细解释 1.Android单线程模型 2.耗时操作放在非主线程中执行 Android主线程和子线程之间的通信封装类:AsyncTask类 1.子线程中更新UI 2.封装.简化异步操作. 3.AsyncTask机制:底层是通过线程池来工作的,当一个线程没有执行完毕,后边的线程是无法执行的.必须等前边的线程执行完毕后,后边的线程才能执行. AsyncTask类使用注意事项: 1.在UI线程中创建AsyncTask的实例 2.必须在UI线程中调用As

Android开发中的设计模式—单例模式的详细解释

Android开发中的设计模式-单例模式的详细解释: 1. 单例模式的特点: (1).保证一个类只有一个实例 (2).提供一个能访问到他的全局访问点. (3).构造函数声明为私有的,从而阻止了在类外创建对象 2. 种类: (1).饿汉式单例模式 (2).懒汉式单例模式 3. 代码分析: (1).饿汉式单例模式: //类加载的时候对象就实例化了. private static Single mSingle = new Single(); public static Single getInstan

Android中ViewHolder模式开发的详细解释

Android开发中ViewHolder模式开发的详细解释: 1.ViewHolder的解释: (1).只是一个静态类,不是Android的API方法. (2).它的作用就在于减少不必要的调用findViewById,然后把对底下的控件引用存在ViewHolder里面,再在View.setTag(holder)把它放在view里,下次就可以直接取了. 2.convertView中的TAG: (1).Tag不像ID是用标示view的.Tag从本质上来讲是就是相关联的view的额外的信息.它们经常用

Android slidingmenu详细解释 滑动的优化

Android slidingmenu 详细解释 性能优化 转载请注明:   http://blog.csdn.net/aaawqqq 简单介绍 SlidingMenu 是github 上Android开源项目  能用于高速集成 Android 側滑菜单效果 Slidingmenu 里面能够包括多种组件 fragment  viewpager  listview  等 下载地址: github    : https://github.com/jfeinstein10/SlidingMenu ac

Android自定义相机超详细讲解

Android自定义相机超详细讲解 转载请标明出处: http://blog.csdn.net/vinicolor/article/details/49642861: 由于网上关于Android自定义相机的文章写得不是太详细,Google官方的文档又说得不太容易理解,所以今天我来详细讲解一下Android自定义相机. 这篇文章主要写给一些刚刚接触Android的那些看官方API困难以及不太了解Android机制的同学们,所以熟练开发者可以绕道了. 最近在使用Camera类的时候发现居然被弃用了,