zoukankan      html  css  js  c++  java
  • R.java文件介绍

    http://blog.chinaunix.net/uid-21411227-id-4133828.html

    注意:R.java文件不能手动修改。

     

    1. HelloWorld工程中的R.java文件解析

    package com.android.hellworld;

     

    public final class R {

        public static final class attr {

        }

        public static final class drawable {

            public static final int icon=0x7f020000;

        }

        public static final class layout {

            public static final int main=0x7f030000;

        }

        public static final class string {

            public static final int app_name=0x7f040001;

            public static final int hello=0x7f040000;

        }

    }

     

        R.java文件中默认有attr、drawable、layout、string等四个静态内部类,每个静态内部类分别对应着一种资源,如layout静态内部类对应 layout中的界面文件,其中每个静态内部类中的静态常量分别定义一条资源标识符,如public static final int main=0x7f030000;对应的是layout目录下的main.xml文件。

     

        由于目前【drawable-*dpi】目录下都只有icon.png一个图片文件,因此此时不同详述的同名的icon.png文件在drawable内部类总只有一个icon属性。如果我们在【drawable-*dpi】目录下再添加一幅图片,则内部类中会自动的添加一个icon属性。

     

    添加资源的命名规则:资源文件只能以小写字母和下划线做首字母,随后的名字中只能出现 [a-z0-9_.] 这些字符,否则R.java 文件不会自动更新,并且eclipse会提示错误。

     

        理解了R.java 文件中内容的来源,即当开发者在res/目录中任何一个子目录中添加相应类型的文件之后,ADT会在R.java文件中相应的内部类中自动生成一条静态int类型的常量,对添加的文件进行索引。如果在layout目录下再添加一个新的界面,那么在public static final class layout中也会添加相应的静态int常量。相反当我们在res目录下删除任何一个文件,其在R.java中对应的记录会被ADT自动删除。

        R.java文件除了有自动标示资源的索引功能之外,还有另外一个主要的功能,如果res目录中的某个资源在应用中没有被使用到,在该应用被编译的时候系统就不会把对应的资源编译到该应用的APK包中,这样可以节省Android手机的资源。

     

     

    2. 如何通过R.java文件来引用到所需要的资源

    1)在java程序中引用资源

    按照java的语法来引用即:R.resource_type.resource_name

    注意:resource_name不需要文件的后缀名

    Android系统本身自带了很多的资源,我们也可以进行引用,只是需要再前面加上“Android.”以声明该资源来自Android系统,即:Android.R.resource_type.resouce_name

    例:【drawable-*hpi】下的icon.png

    该图片在R.java 文件的映射为drawable内部类下icon参数,则如果要获取该资源,则写法为:R.drawble.icon

    2.在XML文件中引用资源

    格式:@[package:]type/name

    在xml文件中,如main.xml以及AndroidMainfest.xml文件中通过“@drawable/icon”的方式获取。其中“@”代表的是R.java类。“drawable”代表的是R.java中的静态内部类“drawable”,“/icon”代表静态内部类“drawable”中的静态属性“icon”,而该属性可以指向res目录下的“drawable-*dpi”中的icon.png资源。其他类型的文件也比较类似。凡是在R 文件中定义的资源都可以通过“@Static_inner_classes_name/resource_name” 的方式获取。如“@id/button”,“@string/app_name”。

    如果访问的是Android系统中自带的文件,则要添加包名“Android:”。例如:android:textColor="@android:color/red"

     

         在布局文件中当我们需要为一些组件添加Id属性作为标识,可以使用如下的表达式:“@+id/string_name”,其中“+”表示在 R.java的名为id的内部类中国添加一条记录。例:“@+id/button” 的含义是在R.java 文件中的id这个静态内部类添加一条常量名为button,该常量就是该资源的标识符。如果 id这个静态内部类不存在,则会首先生成它。

  • 相关阅读:
    深入理解Java中停止线程
    浅入浅出JDBC————1分钟了解JDBC
    Java多线程入门中几个常用的方法
    创建Java多线程的两种方式和线程异常
    小白学习前端---第二天 HTML的基本属性————1
    Info类
    Control类
    demo 代码
    防作弊原理
    状态类
  • 原文地址:https://www.cnblogs.com/feng9exe/p/5749513.html
Copyright © 2011-2022 走看看