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"
        />

     

                    

       

  • 相关阅读:
    使用 libevent 和 libev 提高网络应用性能
    An existing connection was forcibly closed by the remote host
    各种浏览器的兼容css
    vs输出窗口,显示build的时间
    sass
    网站设置404错误页
    List of content management systems
    css footer not displaying at the bottom of the page
    强制刷新css
    sp_executesql invalid object name
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3437246.html
Copyright © 2011-2022 走看看