r.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这个静态内部类不存在,则会首先生成它。
r.java是什么文件_R.java文件介绍相关推荐
- Java实现文件分割和文件合并实例
文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来). 找了好多博客,本来想转载一个来的 结果找不到了.很无奈. 只好自己贴代码上了. 当然我会尽力好好写注释的. 文件切割器: impo ...
- 文件到Java中的byte []
如何将java.io.File转换为byte[] ? #1楼 如果要将字节读取到预分配的字节缓冲区中,此答案可能会有所帮助. 您的第一个猜测可能是使用InputStream read(byte[]) ...
- 如何创建文件并用Java写入文件?
用Java创建和写入(文本)文件的最简单方法是什么? #1楼 这是一个用于创建或覆盖文件的小示例程序. 它是长版本,因此更容易理解. import java.io.BufferedWriter; im ...
- Java IO流之【缓冲流和文件流复制文件对比】
与文件流相比,缓冲流复制文件更快 代码: package Homework;import java.io.BufferedOutputStream; import java.io.File; impo ...
- java8 监控文件变化_[Java 8] (4) 列举目录下的所有文件和监视文件变化
列举目录中的所有文件 首先给出代码: Files.list(Paths.get(".")).forEach(System.out::println); Files.list方法得到 ...
- java file取不到linux文件_Java中高级核心知识全面解析——Linux基本命令(切换、增删改查、压缩文件、权限命令)...
一.目录切换命令 cd usr: 切换到该目录下usr目录 cd ..(或cd../): 切换到上一层目录 cd /: 切换到系统根目录 cd ~: 切换到用户主目录 cd -: 切换到上一个操作所在 ...
- java 处理byte_java - 文件到Java中的byte [] - 堆栈内存溢出
===============>>#1 票数:1222 例: import java.io.File; import java.nio.file.Files; File file; // ...
- Java 方法、 流(Stream)、文件(File)和IO 总结
这里只总结几个要点. 1. 方法的命名规则 1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符.例如:addPerson. 2.下划线可能出现在 JUnit 测 ...
- Hadoop HDFS (3) JAVA訪问HDFS之二 文件分布式读写策略
先把上节未完毕的部分补全,再剖析一下HDFS读写文件的内部原理 列举文件 FileSystem(org.apache.hadoop.fs.FileSystem)的listStatus()方法能够列出一 ...
最新文章
- C++中stl使用过程中的一些tips
- .NET弹出对话框小结
- tomcat运行问题解决方法
- Chrome 无法抓取跳转请求的解决办法
- 遍历QListWidget的item
- Linux 命令(50)—— date 命令
- lib-flexible vue项目(移动端适配)
- 利用泰勒展开求高斯分布表
- 大麦dw11sa不拆机刷机padavan+breed
- 领域驱动设计核心概念
- CurvySplines03(模板提升工作效率)
- ctf解密图片得到flag_图片隐藏flag怎么找
- 二层交换机与三层交换机的区别
- 关于app申请软件著作权登记时软件名称命名的问题
- linux系统镜像后缀及简单介绍
- qlv转mp4出来没有画面
- How to get current full screen dimention and orientation in run time
- 解决0x80070035找不到网络路径
- 分布式系统中的一致性模型
- You will surely observe a Tiffany jewelry
热门文章
- [sdx12] 设置nattype出现(ipa3_wq_handle_rx) from (process_one_work+0x1b0/0x470)导致系统概率死机问题分析及解决方案
- VFP中使用语言的注意事项
- spyder如何使用deug
- Uncaught (in promise) Error
- 如何描述实证结果的经济显著性?
- templete中使用v-for
- UnityShader屏幕特效之Bloom
- 微信小程序引入腾讯视频插件
- git fatal Authentication failed fot ***.git
- Classroom homework