A014-Values资源

时间:2022-06-02
本文章向大家介绍A014-Values资源,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

关于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