Android简单类型资源(Bool、Color、Dimension、ID、Integer、Integer Array、Typed Array)

Android中Bool、Color、Dimension、ID、Integer、Integer Array、Typed Array类型的资源:

一、Bool

定义的文件位置:res/values/filename.xml。文件名任意。

引用:

Java类: R.bool.bool_name

XML文件: @[package:]bool/bool_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="bool_name">[true | false]</bool>
</resources>
例子: res/values/bools.xml :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="screen_small">true</bool>
    <bool name="adjust_view_bounds">false</bool>
</resources>
JAVA类中取值:
Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);
XML文件引用bool资源:
<ImageView
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:src="@drawable/logo"
    android:adjustViewBounds="@bool/adjust_view_bounds" />


二、Color

使用color标签来定义一种颜色资源,使用#符号来指定颜色值,其后跟一个可选的Alpha通道,再之后使用一个或两个十六进制值来标识RGB。样例:

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

文件位置:res/values/colors.xml。文件名任意。

引用:

Java类:  R.color.color_name

XML文件: @[package:]color/color_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="color_name">hex_color</color>
</resources>
例子: res/values/colors.xml :

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>
Java代码引用:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
XML资源文件中引用:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>


三、Dimension(尺寸)

要指定一个尺寸资源,可以使用dimen标签来指定尺寸的值,并在其后跟一个标识符来描述尺寸的单位:

  • px:屏幕像素,与屏幕实际像素一致。这是个不建议使用的单位,因为在不同设备上的实际表现会差异很大,每种设备每英寸的像素数可能不同,屏幕上的总像素数亦可能更多或更少。
  • in:物理英寸,基于屏幕物理尺寸。
  • pt:物理点,基于屏幕实际尺寸,对应1/72英寸。
  • mm:物理毫米,基于屏幕物理尺寸。
  • dp:非密度制约的像素。分辨率无关的像素(Pixel)单位,一种基于屏幕的物理(像素)分辨率的抽象单位。此单位基于一个160 dpi(每英寸点数)的屏幕,所以160dp常常是1英寸且与屏幕像素分辨率无关。dp和像素的比率会随着屏幕密度而变化,但不一定成正比。建议用于在layout里指定View尺寸 ,这样UI在不同屏幕上能自动缩放而显示出相同的大小。(“dip”“dp”同义,编译器都可接受,虽然“dp”更近似于“sp”。)
  • sp:缩放比例无关的像素。类似于dp,但还会根据用户的字体大小设置进行缩放。建议用于指定字体大小,这样根据屏幕分辨率和用户设置都能自动调整。

文件位置:res/values/filename.xml。文件名任意。

引用:

Java类:   R.dimen.dimension_name

XML文件:  @[package:]dimen/dimension_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="dimension_name">dimension</dimen>
</resources>
例子: res/values/dimens.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textview_height">25dp</dimen>
    <dimen name="textview_width">150dp</dimen>
    <dimen name="ball_radius">30dp</dimen>
    <dimen name="font_size">16sp</dimen>
</resources>
Java代码引用:

Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);
XML资源文件中引用:

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>


四、ID

XML格式定义的资源唯一ID。对应<item>元素里指定的名称,Android开发工具在R.java类中创建一个唯一的整数,可用来标识应用程序资源(比如:UI布局中的一个View,或者在应用程序代码中被用作一个唯一的整数(比如:对话框的ID或一个返回值)。

注意:请记住ID资源不代表一个实际的资源项,而只是一个可与其他资源绑定的唯一ID,或是一个用于应用程序代码中的唯一整数。

文件位置:res/values/filename.xml。文件名任意。

引用:

Java类:   R.id.name

XML文件:  @[package:]id/name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="id_name" />
</resources>

<item>:定义一个唯一的ID。不含值,只含属性。
属性:
Type:必须是“id”。
name:String类型。ID的唯一名称。

例子:

res/values/ids.xml文件:
以下代码“button_ok”作为Button控件的ID

<Button android:id="@id/button_ok"
    style="@style/button_style" />
注意 android:id 的值: ID 引用里不含加号 “+” 了,因为这个 ID 已经在上面的 ids.xml 中定义过了。(如果 XML 资源里用加号指定一个 ID— 类似格式 android:id="@+id/name" 那就意味着 “name” 命名的 ID 还不存在并需要创建它。)

五、Integer

文件位置:res/values/filename.xml

文件名任意。

引用:

Java类:   R.integer.integer_name

XML文件:  @[package:]integer/integer_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="integer_name">integer</integer>
</resources>
例子: res/values/integers.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max_speed">75</integer>
    <integer name="min_speed">5</integer>
</resources>
Java文件中调用:

Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);


六、Integer Array

整数数组。

文件位置:res/values/filename.xml。文件名任意。

引用(同String Array):

Java类:   R.array.integer_array_name

XML文件:  @[package:]array.integer_array_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="integer_array_name">
        <item>integer</item>
    </integer-array>
</resources>
例子: res/values/integers.xml :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max_speed">75</integer>
    <integer-array name="integer-array">
        <item>10</item>
        <item>20</item>
        <item>@integer/max_speed</item>	<!-- 引用其他integer资源 -->
    </integer-array>
</resources>
Java中调用:
Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);


七、Typed Array

用于创建其它资源(除了String和Integer,字符串有String Array,整数有Integer Array)的数组,比如drawable。注意数组元素不必是同一类型的,可以创建多种资源组成的数组。但必须小心处理数组内不同的数据类型,利用TypedArrayget...()方法正确地读取每个数据项。

文件位置:res/values/filename.xml。文件名任意。

编译后的资源数据类型:

指向TypedArray的指针。

引用(同String Array、Integer Array):

Java类:   R.array.array_name

XML文件:  @[package:]array.array_name

语法:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="typed_array_name">
        <item>resource</item>
    </array>
</resources>
例子, res/values/arrays.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="icons">
        <item>@drawable/home</item>
        <item>@drawable/settings</item>
        <item>@drawable/logout</item>
    </array>
    <array name="colors">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>
</resources>
以下程序代码取出每个数组并读取第一个数组元素:

Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);

TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);


测试以上资源的源码:测试Demo


官网原文:http://developer.android.com/guide/topics/resources/more-resources.html

参考:http://www.cnblogs.com/over140/archive/2011/10/24/2222255.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值