zoukankan      html  css  js  c++  java
  • 资源的类型及存储方式——使用资源

           在Android应用中使用资源可分为在Java代码和XML文件中使用资源,其中Java代码用于为Android应用定义四大组件,而XML文件中则用于为Android应用定义各种资源。

           1、在Java代码中使用资源清单项

            由于Android SDK会在编译应用时在R类中为/res目录下的所有资源创建索引项,因此在Java代码中访问资源主要通过R类来完成,其完整的语法格式为:

            [<package_name>.]R.<resource_type>.<resource_name>

            上面语法格式中各成分的说明如下。

    • <package_name>:指定R类所在包,实际上就是使用全限定类名。当然,如果在Java程序中导入R类所在包,就可以省略包名。
    • <resources_type>:R类中代表不同资源类型的子类,例如string代表字符串资源。
    • <resources_name>:指定资源的名称。该资源名称可能是无后缀的文件名(如图片资源),也可能是XML资源元素中由android:name属性所指定的名称。   

           例如如下代码片段:

          

    //从drawable资源中加载图片,并设为该窗口的背景
    
          getWindow().setBackgroundDrawableResource(R.drawable.back);
    
           //从string资源中获取指定字符串资源,并设置该窗口的标题
    
           getWindow().setTitle(getResources().getText(R.string.main_title)) 
    
          //获取指定的TextView组件,并设置该组件显示string资源中的指定字符串资源
    
          TextView msg=(TextView)findViewById(R.id.msg);
    
          msg.setText(R.string.hello_message);     

            2、在Java代码中访问实际资源
             R 资源清单类为所有的资源都定义了一个资源清单项,但这个清单项只是一个int类型的值,并不是实际的资源对象。大部分情况下,Android应用的API允许直接使用int类型的资源清单项代替应用资源。

             但有些时候,程序也需要使用实际的Android资源,为了通过资源清单项目来获取实际资源,可以借助于Android提供的Resources类。

             Reources主要通过了如下两类方法。

    • getXxx(int id):根据资源清单ID来获取实际资源。
    • getAssets():获取访问/assets/目录下资源的AssetManager对象。

            Resources由Context调用getResources()方法来获取。

           下面的代码片段示范了如何通过Resources获取实际字符串资源。

         

      //直接调用Activity的getResources()方法来获取Resources对象
    
           Resources res=getResources();
    
           //获取字符串资源
    
            String mainTitle res.getText(R.string.main_title);
    
           //获取Drawable资源
    
           Drawable logo=res.getDrawable(R.drawable.logo);
    
          //获取数组资源
    
         int[] arr=res.getIntArray(R.array.books);

              3、在XML代码中使用资源
                   当定义XML资源文件时,其中的XML元素可能需要指定不同的值,这些值可设置为已定义的资源项。在XML代码中使用资源的完整语法格式为:

                  @[<package_name>:]<resource_type>/<resource_name>

               上面语法格式中各成分的说明如下。 

    •   <package_name>:指定资源类所在应用的包。如果所引用的资源和当前资源位于同一个包下,则<package_name>可以省略。
    • <resource_type>:R类中代表不同资源类型的子类。
    • <resource_name>:指定资源的名称。该资源名称可能是无后缀的文件名(如图片资源),也可能是XML资源元素中由android:name属性所指定的名称。              

            例如如下代码片段在一份文件中定义了两种资源:

         

    <? version="1.0" encodig="utf-8">
    <resources>
    <color name="red">#ff00</color>
    <string name="hello">Hello!</string>
    </resources>

          接下来与它位于同一包中的XML资源文件就可通过如下方式来使用资源:
         

    <EditText     xmlns:android="http://schemas.android.com/apk/res/android"
           android:textColor="@color/red"
    android:text="@string/hello"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />

     

                    

       

  • 相关阅读:
    Selenium WebDriver 中鼠标和键盘事件分析及扩展
    Windows Mobile 常用键值VK对应表
    application.yml
    示例
    秒懂HTTPS接口(实现篇)
    秒懂HTTPS接口(接口测试篇)
    秒懂HTTPS接口(原理篇)
    SpringBoot全局捕获异常示例
    官方文档
    Python基础02——控制流
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3437246.html
Copyright © 2011-2022 走看看