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属性。

PS:添加资源的命名规则:资源文件只能以小写字母和下划线做首字母,随后的名字中只能出现 [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手机的资源。

如何通过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这个静态内部类不存在,则会先生成它。

R.java文件介绍相关推荐

  1. Android下HelloWorld项目的R.java文件介绍

    R.java文件介绍 HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R {     public s ...

  2. r.java是什么_R.java文件介绍

    http://blog.chinaunix.net/uid-21411227-id-4133828.html 注意:R.java文件不能手动修改. 1. HelloWorld工程中的R.java文件解 ...

  3. r.java是什么文件_R.java文件介绍

    http://blog.chinaunix.net/uid-21411227-id-4133828.html 注意:R.java文件不能手动修改. 1. HelloWorld工程中的R.java文件解 ...

  4. Android中R.java文件详解

    R.java文件有两种,两种文件作用一样都是获取资源的引用,区别在于一个存放着我们写的项目中资源的引用,另一个存放着系统定义好的一些资源 1.1 项目的R.java文件 先说第一种是项目编译出来的R. ...

  5. 一种导致android开发时无法生成R.java文件的原因

    为什么80%的码农都做不了架构师?>>>    现象 gen文件夹下没有出现R.java文件 .java文件中无法自动引入应用的R,只能 import android.R 工程右键 ...

  6. Android工程中R.java文件的重新生成——注意资源文件的错误

    一.如果二或三步骤还是不能生成R.java中内容,一般是XML文件有错,或者xml引用的资源文件找不到,用排除法删除xml后执行二或者三的步骤. 二. 在Android中使用开源代码或者自己开发项目的 ...

  7. gen文件下有两个R.java_gen目录无法更新,或者gen目录下的R.JAVA文件无法生成

    gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自 ...

  8. r.java没有生成_R.java 常见问题(R.java文件没有生成 )

    1.选择菜单  Project >> Clean ,前提是勾选上 Bulid Automatically(自动构建部署) , 点Clean后会重新构建项目,因为一般情况下,R.java文件 ...

  9. 只不过是R.java文件的特性-----出错信息:R.java was modified manually! Reverting to generated version!...

    出错信息:R.java was modified manually! Reverting to generated version! 出错原因:今天在res下建立了一个drawable的文件夹存放图片 ...

最新文章

  1. 一年月份大小月口诀_有关12个月份的顺口溜
  2. asp开发中存储过程应用全接触 _asp技巧
  3. localStorage、sessionStorage用法总结
  4. TY_GASPX SQL
  5. xcode中遇到的英文名词(更新)
  6. 音视频基础知识---视频编码格式
  7. 智慧城市顶层设计跨界思维指导方案(ppt)
  8. OverLeaf(LaTeX在线编辑器)使用简介
  9. 子平格局——戊癸化火格
  10. ConcurrentLinkedQueue 源码解析(JDK8)
  11. 使命召唤19发布时间曝光 确定将于10月28号发布
  12. mysql根据中文拼音分组_【改进篇】使用MySql实现好友昵称按拼音排序或分组
  13. B. Subtract Operation(stl,数学)
  14. Remove from Sidebar后找回
  15. python定义一个圆类、计算圆的面积和周长_VC6.0定义一个圆类,计算圆的面积和周长,我的程序老出错...
  16. Netbackup(NBU)8.2安装配置
  17. 敬语①(基本的な敬語)
  18. 机器学习11:演化学习
  19. 浏览器播放rtsp视频流:3、rtsp转webrtc播放
  20. 数据库原理(十 四)- 数据库的实施和维护

热门文章

  1. 什么是最左匹配原则?
  2. 数组元素数组中的元素通过解析字符串参数获得
  3. python windows 消息通讯_python获取windows信息
  4. jqprintsetup已经安装还会提示_英雄联盟PBE服务器安装指南 抢先体验新模式“云顶之弈”不用等...
  5. linux下使用python_Python随笔(一)、Linux系统下python环境的安装
  6. linux.调整收发队列,linux消息队列通信
  7. android 原始定位,安卓原生定位
  8. Cocoapods ----- pod install报错
  9. 学习OpenGL:笔记一
  10. Linux段式管理与页式管理