关于Android中使用的资源文件,前面陆陆续续也介绍了不少,这节课给大家介绍一下Android中使用到的“值资源”。
可以看到上面的截图,在values文件夹下包含了很多个xml文件,每个文件代表一种值类型,里面定义了具体的类型资源。
看一下在values下可以定义哪些资源文件:
Bool
在bools.xml中定义bool值
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool
name="bool_name"
>[true | false]</bool>
</resources>
eg:
保存路径:res/values/bools.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="screen_small">true</bool>
<bool name="adjust_view_bounds">true</bool>
</resources>
在Java中使用:
Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);
在XML中使用:
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/logo"
android:adjustViewBounds="@bool/adjust_view_bounds" />
Color
在XML文件中定义颜色值
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name="color_name"
>hex_color</color>
</resources>
eg:
保存路径: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
在XML定义尺寸值
尺寸可以使用以下单位:
dp - 与密度无关的像素,主要应用于布局中的间距
sp - 与dp类似,主要应用与字体大小
pt - 屏幕物理长度单位, 表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72。
px - 对应屏幕上实际像素。这个单位不推荐使用,因为不同的设备可以具有不同每英寸不同数量的像素。
mm- 表示毫米,基于屏幕的物理尺寸。
in -表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米,我们经常所说的屏幕多少寸,指的是对角线的长度。
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen
name="dimension_name"
>dimension</dimen>
</resources>
eg:
保存路径: 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值,它会映射到R.java文件,具有唯一性,我们在程序中可以直接使用它作为id。
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
type="id"
name="id_name" />
</resources>
eg:
保存路径:res/values/ids.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="button_ok" />
<item type="id" name="dialog_exit" />
</resources>
在XML中使用:
<Button android:id="@id/button_ok"
style="@style/button_style" />
Integer
在XML中定义整型值。
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer
name="integer_name"
>integer</integer>
</resources>
eg:
保存路径: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
整型数组,对应的也有字符串数组。
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array
name="integer_array_name">
<item
>integer</item>
</integer-array>
</resources>
eg:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="bits">
<item>4</item>
<item>8</item>
<item>16</item>
<item>32</item>
</integer-array>
</resources>
在Java中使用:
Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);
Typed Array
在XML中定义类型资源
语法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array
name="integer_array_name">
<item>resource</item>
</array>
</resources>
eg:
保存位置: 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>
在Java中使用:
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);
总结
上面给大家整理了关于Android中的values资源,这是我们在实际开发中用得到的资源,如何合理去使用它们要根据自己的使用场景,Android为我们提供这些资源就是为了让我们更加方便的开发,减少硬编码的情形,也是为了规范我们开发,把资源和逻辑代码分开也会让我们更加容易理解程序的设计模式。
本文参考:
http://www.android-doc.com/guide/topics/resources/more-resources.html