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

本文分享自微信公众号 - 小巫技术博客(wwjblog)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

18030
来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.1K20
来自专栏腾讯社交用户体验设计

ISUX Xcube智能一键生成H5

51220
来自专栏怀英的自我修炼

考研英语-1-导学

英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

11810
来自专栏微信公众号:小白课代表

不只是软件,在线也可以免费下载百度文库了。

不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

44530
来自专栏钱塘大数据

中国互联网协会发布:《2018中国互联网发展报告》

在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

13550
来自专栏钱塘大数据

理工男图解零维到十维空间,烧脑已过度,受不了啦!

让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

32830
来自专栏腾讯高校合作

【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

15720
来自专栏前端桃园

知识体系解决迷茫的你

最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

21140
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

29140

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励