Android复习(二)应用资源——>更多类型
更多资源类型
本页面定义了更多类型的可具体化的资源,包括:
- Bool
- 带有布尔值的 XML 资源。
- 颜色
- 带有颜色值(十六进制颜色)的 XML 资源。
- 尺寸
- 带有尺寸值(包含度量单位)的 XML 资源。
- ID
- 提供应用资源和组件的唯一标识符的 XML 资源。
- 整数
- 带有整数值的 XML 资源。
- 整数数组
- 提供整数数组的 XML 资源。
- 类型化数组
- 提供
TypedArray(可用于可绘制对象数组)的 XML 资源。
Bool
在 XML 中定义的布尔值。
注意:Bool 是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将 bool 资源与其他简单资源合并到一个 <resources> 元素下。
- 文件位置:
res/values/filename.xml
文件名可以任意设置。<bool>元素的name将用作资源 ID。- 资源引用:
- 在 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>
- 元素:
-
<resources>- 必需。该元素必须是根节点。
没有属性。
<bool>- 布尔值:
true或false。属性:
name- 字符串。Bool 值的名称。该名称将用作资源 ID。
- 示例:
- 保存在
res/values-small/bools.xml的 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); kotlin代码: val screenIsSmall: Boolean = resources.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" />
颜色
在 XML 中定义的颜色值。颜色使用 RGB 值和 alpha 通道指定。您可以在接受十六进制颜色值的任何地方使用颜色资源。当 XML 中需要可绘制资源时,您也可以使用颜色资源(例如,android:drawable="@color/green")。
该值始终以井号 (#) 字符开头,后跟以下某种格式的“透明度、红、绿、蓝”(Alpha-Red-Green-Blue) 信息:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
注意:颜色是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将颜色资源与其他简单资源合并到一个 <resources> 元素下。
- 文件位置:
res/values/colors.xml
该文件名可以任意设置。<color>元素的name将用作资源 ID。- 资源引用:
- 在 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> - 元素:
-
<resources>- 必需。该元素必须是根节点。
没有属性。
<color>- 以十六进制表示的颜色,如上所述。
属性:
name- 字符串。颜色的名称。该名称将用作资源 ID。
- 示例:
- 保存在
res/values/colors.xml的 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); kotlin代码: val color: Int = resources.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"/>
尺寸
在 XML 中定义的尺寸值。尺寸由数字后跟度量单位来指定。例如:10px、2in、5sp。Android 支持以下度量单位:
dp- 密度无关像素 - 基于屏幕物理密度的抽象单位。这些单位相对于 160 dpi(每英寸点数)屏幕确立,在该屏幕上 1dp 大致等于 1px。在更高密度的屏幕上运行时,用于绘制 1dp 的像素数量会根据屏幕 dpi 按照适当的系数增加。同样,在更低密度的屏幕上,用于绘制 1dp 的像素数量会相应减少。dp 对像素的比率会随着屏幕密度的变化而变化,但不一定成正比。要使布局中的视图尺寸根据不同的屏幕密度正确调整大小,一种简单的解决办法就是使用 dp 单位(而不是 px 单位)。换句话说,它可在不同设备上提供一致的界面元素大小。
sp- 缩放无关像素 - 这和 dp 单位类似,但它也会根据用户的字体大小偏好设置进行缩放。建议您在指定字体大小时使用此单位,以便字体大小会根据屏幕密度和用户偏好设置进行调整。
pt- 点 - 1/72 英寸,基于屏幕的物理尺寸,假设屏幕密度为 72dpi。
px- 像素 - 对应于屏幕上的实际像素数。建议不要使用这种度量单位,因为不同设备的实际呈现效果可能不同;每台设备的每英寸像素数可能不同,屏幕上的总像素数也可能有差异。
mm- 毫米 - 基于屏幕的物理尺寸。
in- 英寸 - 基于屏幕的物理尺寸。
注意:尺寸是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将尺寸资源与其他简单资源合并到一个 <resources> 元素下。
- 文件位置:
res/values/filename.xml
该文件名可以任意设置。<dimen>元素的name将用作资源 ID。- 资源引用:
- 在 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>
- 元素:
-
<resources>- 必需。该元素必须是根节点。
没有属性。
<dimen>- 定义一个尺寸,由浮点数后跟度量单位(dp、sp、pt、px、mm、in)表示,如上所述。
属性:
name- 字符串。尺寸的名称。该名称将用作资源 ID。
- 示例:
- 保存在
res/values/dimens.xml的 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); kotlin代码: val fontSize: Float = resources.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。Android 开发者工具可使用您在 <item> 元素中提供的名称,在您项目的 R.java 类中创建唯一的整数,供您用作应用资源(例如,界面布局中的 View)的标识符,或创建唯一的整数,供您在应用代码中使用(例如,作为对话框的 ID 或结果代码)。
注意:ID 是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将 ID 资源与其他简单资源合并到一个 <resources> 元素下。另外请注意,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>
- 元素:
-
<resources>- 必需。该元素必须是根节点。
没有属性。
<item>- 定义唯一 ID。不设置值,只有属性。
属性:
type- 必须为“id”。
name- 字符串。ID 的唯一名称。
- 示例:
-
保存在
res/values/ids.xml的 XML 文件:<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="button_ok" />
<item type="id" name="dialog_exit" />
</resources>
然后,以下布局代码段会将“button_ok”ID 应用到按钮微件:
<Button android:id="@id/button_ok"
style="@style/button_style" />
请注意,
android:id值不会在 ID 引用中包含加号,因为此 ID 已存在,如上面的ids.xml示例中所定义。(如果使用加号以android:id="@+id/name"格式指定 XML 资源的 ID,则表示“name”ID 不存在,应该创建它。)再比如,以下代码段使用“dialog_exit”ID 作为对话框的唯一标识符:
showDialog(R.id.dialog_exit)
在同一应用中,在创建对话框时会比较“dialog_exit”ID:
java代码: protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch(id) {
case R.id.dialog_exit:
...
break;
default:
dialog = null;
}
return dialog;
} kotlin代码: override fun onCreateDialog(id: Int): Dialog? {
return when(id) {
R.id.dialog_exit -> {
...
}
else -> {
null
}
}
}
整数
在 XML 中定义的整数。
注意:整数是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将整数资源与其他简单资源合并到一个 <resources> 元素下。
- 文件位置:
res/values/filename.xml
该文件名可以任意设置。<integer>元素的name将用作资源 ID。- 资源引用:
- 在 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>
- 元素:
-
<resources>- 必需。该元素必须是根节点。
没有属性。
<integer>- 一个整数。
属性:
name- 字符串。该整数的名称。该名称将用作资源 ID。
- 示例:
-
保存在
res/values/integers.xml的 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); kotlin代码: val maxSpeed: Int = resources.getInteger(R.integer.max_speed)
整数数组
在 XML 中定义的整数数组。
注意:整数数组是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将整数数组资源与其他简单资源合并到一个 <resources> 元素下。
- 文件位置:
res/values/filename.xml
该文件名可以任意设置。<integer-array>元素的name将用作资源 ID。- 编译后的资源数据类型:
- 指向整数数组的资源指针。
- 资源引用:
- 在 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>
- 元素:
-
<resources>- 必需。该元素必须是根节点。
没有属性。
<integer-array>- 定义一个整数数组。包含一个或多个
<item>子元素。属性:
android:name- 字符串。数组的名称。此名称将用作引用数组的资源 ID。
<item>- 一个整数。该值可以是对另一个整数资源的引用。必须是
<integer-array>元素的子元素。没有属性。
- 示例:
- 保存在
res/values/integers.xml的 XML 文件:<?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); kotlin代码: val bits: IntArray = resources.getIntArray(R.array.bits)
类型化数组
在 XML 中定义的 TypedArray。您可以使用这种资源创建其他资源(例如可绘制对象)的数组。请注意,此类数组不要求所含的资源具有相同的类型,因此您可以创建混合资源类型的数组,但必须知道数组中有哪些数据类型及其位置,以便可以使用 TypedArray 的 get...() 方法正确获取每一项数据。
注意:类型化数组是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,您可以在一个 XML 文件中将类型化数组资源与其他简单资源合并到一个 <resources> 元素下。
- 文件位置:
res/values/filename.xml
该文件名可以任意设置。<array>元素的name将用作资源 ID。- 编译后的资源数据类型:
- 指向
TypedArray的资源指针。 - 资源引用:
- 在 Java 中:
R.array.array_name
在 XML 中:@[package:]array.array_name - 语法:
-
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array
name="integer_array_name">
<item>resource</item>
</array>
</resources>
- 元素:
-
<resources>- 必需。该元素必须是根节点。
没有属性。
<array>- 定义一个数组。包含一个或多个
<item>子元素。属性:
android:name- 字符串。数组的名称。此名称将用作引用数组的资源 ID。
<item>- 通用资源。该值可以是对资源或简单数据类型的引用。必须是
<array>元素的子元素。没有属性。
- 示例:
- 保存在
res/values/arrays.xml的 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); kotlin代码: val icons: TypedArray = resources.obtainTypedArray(R.array.icons)
val drawable: Drawable = icons.getDrawable(0) val colors: TypedArray = resources.obtainTypedArray(R.array.colors)
val color: Int = colors.getColor(0,0)
Android复习(二)应用资源——>更多类型的更多相关文章
- Android使用应用程序资源(、颜色数组、尺寸、弦、布尔、整型)
一.Android资源分类详细解释 1.Android资源类别 Android中的资源分为两大类 : 可直接訪问的资源, 无法直接訪问的原生资源; -- 直接訪问资源 : 这些资源能够使用 R. ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
- Android生成二维码--保存和分享二维码图片
之前写过生成自定义二维码的两篇文章:<Android生成自定义二维码><Android生成二维码–拍照或从相册选取图片>,下面就介绍一下Android应用内如何保存以及分享二维 ...
- HandlerMethodArgumentResolver(二):Map参数类型和固定参数类型【享学Spring MVC】
每篇一句 黄金的导电性最好,为什么电脑主板还是要用铜? 飞机最快,为什么还有人做火车? 清华大学最好,为什么还有人去普通学校? 因为资源都是有限的,我们现实生活中必须兼顾成本与产出的平衡 前言 上文 ...
- android学习笔记32——资源
Android应用资源 资源分类: 1.无法直接访问的原生资源,保存于asset目录下 2.可通过R资源清单类访问的资源,保存于res目录下 资源的类型以及存储方式 android要求在res目录下用 ...
- MFC六大核心机制之二:运行时类型识别(RTTI)
上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...
- 【转】Android LCD(二):LCD常用接口原理篇
关键词:android LCD TFT TTL(RGB) LVDS EDP MIPI TTL-LVDS TTL-EDP 平台信息:内核:linux2.6/linux3.0系统:android/ ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- Android字符串,颜色,尺寸资源的使用
字符串.颜色.尺寸资源文件这三种文件位于res文件夹的values文件夹中,名称分别为strings.xml , colors.xml , dimens.xml下面是例子,首先来看字符串资源文件str ...
- 浅谈Kotlin(二):基本类型、基本语法、代码风格
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在A ...
随机推荐
- 【Zookeeper】01 概述 & 基础部署
背景: 随着互联网技术的发展,企业对计算机系统的计算,存储能力要求越来越高,各大IT企业都在追求高并发,海量存储的极致, 在这样的背景下,单纯依靠少量高性能单机来完成计算机,云计算的任务已经无法满足需 ...
- 实现一个终端文本编辑器来学习golang语言
欢迎!这个系列的博文会带你使用golang语言来编写一个你自己的文本编辑器. 首先想说说写这个系列文章的动机. 其实作为校招生加入某头部互联网大厂一转眼已经快4年了.可以说该大厂算是比较早的用gola ...
- 鹏程实验室,启智平台,openI平台,积分兑换新标准
2024-02-13 11:12:21 星期二 地址: https://openi.pcl.ac.cn/reward/point/rule
- 《Python数据可视化之matplotlib实践》 源码 第一篇 入门 第二章
图 2.1 import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams['font.sans-serif']=['Sim ...
- Apache DolphinScheduler 社区5月月报更新!
各位热爱 DolphinScheduler 的小伙伴们,社区5月份月报更新啦!这里将记录 DolphinScheduler 社区每月的重要更新,欢迎关注,期待下个月你也登上Merge Star月度榜单 ...
- .NET 与 LayUI 实现高效敏捷开发框架
前言 WaterCloud 是一个集成了 LayUI 的高效敏捷开发框架,专为 .NET 开发者设计. 它不仅支持多种 .NET 版本(.NET 4.5..NET Core 3.1..NET 5..N ...
- .NET 8 中利用 MediatR 实现高效消息传递
前言 MediatR 是 .NET 下的一个实现消息传递的库,轻量级.简洁高效,用于实现进程内的消息传递机制.它基于中介者设计模式,支持请求/响应.命令.查询.通知和事件等多种消息传递模式.通过泛型支 ...
- 2023 SMU RoboCom-CAIP 选拔赛
前言 更详细题解可以参考咱学长的( 2023 SMU RoboCom-CAIP 选拔赛.zip A. 小斧头 f_k 表示满足条件的j = k 的(i,j)对的数量.如上图中第四行即为f1至f5的元素 ...
- 玩转内核链表list_head,3个超级哇塞的的例子
在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head.虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作li ...
- 查看 Linux 系统信息
查看系统信息 查看发行版信息 cat /etc/os-release lsb_release -a 查看公网 IP 地址 curl -4 icanhazip.com 查看系统架构 uname -m # ...