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

r.java是什么文件_R.java文件介绍相关推荐

  1. Java实现文件分割和文件合并实例

    文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来). 找了好多博客,本来想转载一个来的 结果找不到了.很无奈. 只好自己贴代码上了. 当然我会尽力好好写注释的. 文件切割器: impo ...

  2. 文件到Java中的byte []

    如何将java.io.File转换为byte[] ? #1楼 如果要将字节读取到预分配的字节缓冲区中,此答案可能会有所帮助. 您的第一个猜测可能是使用InputStream read(byte[]) ...

  3. 如何创建文件并用Java写入文件?

    用Java创建和写入(文本)文件的最简单方法是什么? #1楼 这是一个用于创建或覆盖文件的小示例程序. 它是长版本,因此更容易理解. import java.io.BufferedWriter; im ...

  4. Java IO流之【缓冲流和文件流复制文件对比】

    与文件流相比,缓冲流复制文件更快 代码: package Homework;import java.io.BufferedOutputStream; import java.io.File; impo ...

  5. java8 监控文件变化_[Java 8] (4) 列举目录下的所有文件和监视文件变化

    列举目录中的所有文件 首先给出代码: Files.list(Paths.get(".")).forEach(System.out::println); Files.list方法得到 ...

  6. java file取不到linux文件_Java中高级核心知识全面解析——Linux基本命令(切换、增删改查、压缩文件、权限命令)...

    一.目录切换命令 cd usr: 切换到该目录下usr目录 cd ..(或cd../): 切换到上一层目录 cd /: 切换到系统根目录 cd ~: 切换到用户主目录 cd -: 切换到上一个操作所在 ...

  7. java 处理byte_java - 文件到Java中的byte [] - 堆栈内存溢出

    ===============>>#1 票数:1222 例: import java.io.File; import java.nio.file.Files; File file; // ...

  8. Java 方法、 流(Stream)、文件(File)和IO 总结

    这里只总结几个要点. 1. 方法的命名规则 1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符.例如:addPerson. 2.下划线可能出现在 JUnit 测 ...

  9. Hadoop HDFS (3) JAVA訪问HDFS之二 文件分布式读写策略

    先把上节未完毕的部分补全,再剖析一下HDFS读写文件的内部原理 列举文件 FileSystem(org.apache.hadoop.fs.FileSystem)的listStatus()方法能够列出一 ...

最新文章

  1. C++中stl使用过程中的一些tips
  2. .NET弹出对话框小结
  3. tomcat运行问题解决方法
  4. Chrome 无法抓取跳转请求的解决办法
  5. 遍历QListWidget的item
  6. Linux 命令(50)—— date 命令
  7. lib-flexible vue项目(移动端适配)
  8. 利用泰勒展开求高斯分布表
  9. 大麦dw11sa不拆机刷机padavan+breed
  10. 领域驱动设计核心概念
  11. CurvySplines03(模板提升工作效率)
  12. ctf解密图片得到flag_图片隐藏flag怎么找
  13. 二层交换机与三层交换机的区别
  14. 关于app申请软件著作权登记时软件名称命名的问题
  15. linux系统镜像后缀及简单介绍
  16. qlv转mp4出来没有画面
  17. How to get current full screen dimention and orientation in run time
  18. 解决0x80070035找不到网络路径
  19. 分布式系统中的一致性模型
  20. You will surely observe a Tiffany jewelry

热门文章

  1. [sdx12] 设置nattype出现(ipa3_wq_handle_rx) from (process_one_work+0x1b0/0x470)导致系统概率死机问题分析及解决方案
  2. VFP中使用语言的注意事项
  3. spyder如何使用deug
  4. Uncaught (in promise) Error
  5. 如何描述实证结果的经济显著性?
  6. templete中使用v-for
  7. UnityShader屏幕特效之Bloom
  8. 微信小程序引入腾讯视频插件
  9. git fatal Authentication failed fot ***.git
  10. Classroom homework