关于Android资源的使用

来源:互联网 发布:英汉翻译软件 编辑:程序博客网 时间:2024/06/05 02:55


    无论什么类型的Android资源,都使用它们在Java源代码中的id来标识(或引用)。将id分配给XML文件中资源的语法成为资源引用语法。语法结构为:@[package:]type/name。

    type对应于R.java中一种可用的资源类型命名空间,包括:R.drawable、R.id、R.layout、R.string、R.attr、R.plural、R.array。XML资源引用语法中相应的类型为:Drawable、id、layout、string、attr、plurals、string-array。资源引用@[package:]type/name中的name部分是提供给资源的名称。它在R.java中也被表示为一个int常量。

    如果未在语法@[package:]type/name中指定任何“包”,那么type/name对将根据本地资源和应用程序的本地R.java进行解析。如果指定了android:type/name将使用包android来解析引用ID,具体通过android.R.java文件来完成。可以使用任何Java包名称代替package占位符,以找到正确的R.java文件来解析资源引用。

 

1.在java代码中使用资源

    为了在Java代码中使用资源,AAPT会为Android项目自动生成一份R.java文件(根据应用中的资源文件来自动生成的,可以把R.java理解成Android应用的资源字典),R类里为每份资源分别定义一个内部类,其中每个资源项对应于内部类里一个int类型的Filed。

    注:AAPT生成R.java文件的规则主要是两条:

(1)每类资源对应R类的一个内部类。比如哦所有界面布局资源对应于layout内部类;所有字符串资源对应于string内部类;所有标识符资源对应于id内部类。

(2)每个具体的资源项对应于内部类的一个public static final int类型的Field。

eg:字符串资源文件对应于R.java里如下内容:

public static final class string {

        public static final int app_name=0x7f050000;

}

    借助于AAPT自动生成的R类的帮助,可以在Java代码中通过R.string.app_name来引用该字符串常量。

 

2.在XML中使用资源

    在XML文件中使用资源更加简单,只要按照如下格式来访问即可:

@<资源对应的内部类的类名>/<资源项的名称>

eg:@string/app_name

    当我们在XML文件中使用标识符时,这些标识符无须使用专门的资源进行定义,直接在XML文档中按如下格式分配标识符即可:

@+id/<标识符代号>

eg:android:id=”@+id/ok”

    注:如果希望在Java代码中获取该组件,通过调用Activity的findViewById()方法即可实现;如果希望在XML文件中获取该组件,则可以通过资源引用的方式来引用它。

 

3.定义资源ID供以后使用

    分配id的一般模式可以是创建一个新id,或者使用Android包创建的id。但也可以预先创建id,以后再在自己的包中使用它们。

    如<TextView android:id=”@+id/text”>,如果存在一个名为text的id,那么将使用它。如果该id不存在,那么将创建一个新id。注意,不能使用R.id.text这样的常量,R.java是不可编辑的,即使它可以编辑,每次在/res/*子目录中更改、添加或删除一些项时,都会重新生成这个文件。

    解决的办法是使用资源标记item来定义id,不将它附加到任何特定的资源。如下:

<resources>

<item type=”id” name=”text”/>

</resources>

 

 

 


0 0