zoukankan      html  css  js  c++  java
  • 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)
        
    

      

  • 相关阅读:
    java循环结构
    java 修饰符
    java变量类型
    java对象和类
    java 环境配置及开发工具
    easy_install 和 pip
    比利牛斯獒犬 flask web
    vim 命令
    vim vi Ubuntu 设置
    Python interview_python
  • 原文地址:https://www.cnblogs.com/developer-wang/p/12619957.html
Copyright © 2011-2022 走看看