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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 19:07:26

A014-values资源的相关文章

Android使用xml文件中的array资源

Android中有种使用数组的非常简单的用法,在xml文件中获取. 创建数组资源 在value目录下创建arrays.xml文件 然后在arrays.xml文件中使用<string-array>或者<integer-array>标签定义数组: <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="languages&

应用资源概览

提供资源 您应该始终外部化应用资源,例如图像和代码中的字符串,这样有利于您单独维护这些资源. 此外,您还应该为特定设备配置提供备用资源,方法是将它们分组到专门命名的资源目录中. 在运行时,Android 会根据当前配置使用适当的资源.例如,您可能需要根据屏幕尺寸提供不同的 UI 布局,或者根据语言设置提供不同的字符串. 外部化应用资源后,即可使用在项目 R 类中生成的资源 ID 访问这些资源.有关如何在应用中使用资源,我们将在访问资源中讨论. 本文档介绍如何对 Android 项目中的资源进行分

Android中资源的引用

R.java简单来说就是资源 R.java会自动收录当前应用中所有的资源,并根据这些资源建立对应的ID,包括:布局资源.控件资源.String资源.Drawable资源等 可以理解把所以资源按规则存放在R.java资源里,相当于字典,当文件需要是在引用 引用values中的资源 xml文件引用资源: android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIco

Android 你不可不看的命名规范

标识符命名法最要有四种: Camel(骆驼)命名法:除首单词外,其余所有单词的第一个字母大写,如:fooBar; Pascal命名法:所有单词的第一个字母大写,如:FooBar: 下划线命名法:单词与单词间用下划线做间隔,如:foo_bar; 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量,首字母小写说明该变量的类型. 量的取名方式为:scope_ prefix_qualifier 范围前缀,类型前缀,限定词,如:g_foo_bar; 安卓App层开发主要是Java语言,所

Android开发必备:命名规范

标识符命名法最要有四种: Camel(骆驼)命名法:除首单词外,其余所有单词的第一个字母大写,如:fooBar; Pascal命名法:所有单词的第一个字母大写,如:FooBar: 下划线命名法:单词与单词间用下划线做间隔,如:foo_bar; 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量,首字母小写说明该变量的类型. 量的取名方式为:scope_ prefix_qualifier 范围前缀,类型前缀,限定词,如:g_foo_bar; 安卓App层开发主要是Java语言,所

小巫的Android视频教学出来啦,欢迎大家关注和指正!!!

Android快速开发入门实战(第一季) 概述 各位Android开发者你们好,小巫有幸成为了CSDN学院的讲师,将会献上自己的处女讲,Android入门实战课程,本系列课程分为两季,第一季正在录制当中,会持续更新.第二季计划在第一季录制完成之后马上制定进阶的视频录制计划.由于小巫是第一次录制视频,可能有很多不足,希望大家能关注和指正,多提提宝贵的建议,我会在录制视频的过程中不断完善和进步,来为Android初学者提供更加优质的课程. 第一季课程介绍 本课程由CSDN移动开发专家博主,IT_xi

Android逆向分析(2) APK的打包与安装

http://blog.zhaiyifan.cn/2016/02/13/android-reverse-2/ 2/18日增加对aidl和java编译的描述. 前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之鱼不如授之以渔,只有知道一些基本原理,才能让我们以后能自行解决更多问题. 那么,你知道么?从我们在Android Studio中,点击run,

Android应用如何支持屏幕多尺寸多分辨率问题

作为Android应用程序开发者都知道android是一个"碎片化"的世界.多种系统版本.多种尺寸.多种分辨率.多种机型,还有不同的厂商定制的不同ROM,你开发的应用会在不可预期的手机上报错.这给开发适配带来不小的难度.这篇文章会告诉我们怎么解决这个问题. 1.Android碎片化 1.1.android系统版本 Android更新较大的版本如下: 上面只有当前可用版本,Android L作为开发者版本没有出现其中,未来会有更多的版本.下图给出Android各个版本的占有率,这个是go

Android-应用的本地化及知识拓展之配置修饰符

步骤很简单,只需要两步: 1.创建带有目标语言的配置修饰符的资源子目录 2.将可选资源放入该目录下,android系统会自动处理后续工作 在这里我们需要讲解一下配置修饰符. 中文的配置修饰符:-zh,那么我们需要在res目录下新建两个子目录:res/raw-zh,res/values-zh. 对于没有配置修饰符修饰的子目录,安卓都识别为默认资源目录.但是有一个例外,那就是屏幕显示密度(drawable资源),通常具有三个配置修饰符:-mdpi -hdpi -xhdpi.安卓系统选择何种drawa