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)

  

原文地址:https://www.cnblogs.com/developer-wang/p/12619957.html

时间: 2024-10-08 18:26:31

Android复习(二)应用资源——>更多类型的相关文章

Android复习(二)应用资源 --&gt; 动画

没什么好总结的 复制自 https://developer.android.google.cn/guide/topics/resources/animation-resource 有需要的可以查看官方文档 动画资源 一个动画资源可以定义以下两种动画类型之一: 属性动画 通过使用 Animator 在设定的时间段内修改对象的属性值来创建动画. 视图动画 使用视图动画框架可以创建两种类型的动画: 补间动画:通过使用 Animation 对单张图片执行一系列转换来创建动画 帧动画:通过使用 Anima

Android复习(二)应用资源 --&gt; 颜色状态列表

转自: https://developer.android.google.cn/guide/topics/resources/color-list-resource 颜色状态列表资源 ColorStateList 是一个您可以在 XML 中定义的对象,您可以将其作为颜色来应用,但它实际上会更改颜色,具体取决于其应用到的 View 对象的状态.例如,Button 微件可以处于多种不同状态中的一种(按下.聚焦或既不按下也不聚焦),而使用颜色状态列表,您可以为每种状态提供不同的颜色. 您可以在 XML

dns服务(二)——常用资源记录类型详解

1,SOA记录    NS记录说明了有多台服务器在进行解析,但哪一个才是主服务器呢,NS并没有说明,这个就要看SOA记录了,SOA名叫起始授权机构记录,SOA记录说明了在众多NS记录里那一台才是主要的服务器!并且定义了主从dns服务器数据同步时间属性. SOA(Start Of Authority):     ZONE NAME    TTL        IN        SOA        FQDN    ADMINISTRATOR_MAILBOX (                  

C++ int转string(stringstream可转更多类型)

一.使用atoi 说明: itoa(   int   value,   char   *string,   int   radix   );      第一个参数:你要转化的int;      第二个参数:转化后的char*;      第三个参数:你要转化的进制; 举例: 1 //------------------------------------- 2 //功能:C++ int 转 string (使用atoi) 3 //环境:VS2005 4 //-------------------

Hibernate复习(二)主要对象

1.SessionFactory 一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例. SessionFactory有以下特点: –它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享. –它是重量级的,这意味着不能随意创建或销毁它的实例.如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实 例.如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFac

Android进阶(二十八)上下文菜单ContextMenu使用案例

上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等操作,但是现在此操作莫名其妙的消失了.写了个测试Demo,如中图所示,一切按照逻辑显示正常.怪就怪在项目中无法显示,起初设想是因为Android系统版本太高问题,但是在别的手机上测试之后发现问题依旧存在.难道是因为顶部Tab标题栏遮挡住了选项菜单的显示?继续测试,通过在别的没有Tab标题栏的页面测试选项菜单,

转载分享:Android APP二次打包操作步骤介绍

看到好的技术教程就想转载一下,不喜勿喷!谢谢配合,仅供菜鸟学习研究,不要做坏事哦\(^o^)/~ 关于Android APP 二次打包现象已经屡见不鲜,为何"打包党"就吃准了Android平台,二次打包的操作过程到底有多简单? 本文将从Android apk的结构.二次打包的工具.步骤等方面向移动开发者说明二次打包操作的简单性,从而引起开发者对APP安全的重视,并及时对APP进行代码混淆或加固 保护等安全措施. 安卓apk的文件结构首先来看一下Android apk的内部文件结构. 随

android 中的一些资源注解,让编译器帮你检查代码

android 中的一些资源注解,让编译器帮你检查代码 写方便的时候可以用注解来声明一些参数,以明确的指示参数的类型,让代码更安全.我们看到,在android源代码里大量使用了注解.我整理了一些注解如下: @NonNull  告诉编译器,这个参数是非空的,编译器会帮你做出检查. 示例: @NonNull public static Snackbar make(@NonNull View view, @StringRes int resId, @Duration int duration) {  

Android转载二:工程目录详解

REF:http://blog.csdn.net/dianfusoft/article/details/7422540       可以看出这个工程由src,gen,Android2.3.3 jar包,assets,bin,res,AndroidManifest.xml,proguard.cfg,project.properties这几个文件(夹)组成,具体作用如下所示: 下面分层次详解几个重要的文件(夹) ● src文件夹 展开这个文件夹如下所示 可以看出,这个文件夹主要用来存放源文件 ●ge