博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 资源文件介绍
阅读量:6944 次
发布时间:2019-06-27

本文共 2253 字,大约阅读时间需要 7 分钟。

hot3.png

Android应用程序中的资源

      任何类型的程序都需要使用资源,Android应用程序也不例外。Android应用程序使用的资源有很多都被封装在apk文件中,并随apk文件一起发布。本节将介绍这些资源如何封装在apk文件中,以及使用这些资源的基本方法。
       资源存放在哪里
       既然要将资源封装在apk文件中,那么这些资源一定是放在Eclipse工程的某处。在第2章实现的应用程序中可以看到,在Eclipse工程中有一个res目录。在该目录下有3个子目录:drawable、layout、values。这3个子目录中分别包含icons.png、main.xml和strings.xml。从drawable目录中包含icons.png文件这一点可以初步断定,这个目录是用来保存图像文件的。而layout目录从名字可以看出,该目录是用来保存布局文件的。通过打开values目录中的strings.xml文件可以看出,在strings.xml文件中都是基于XML格式的key-value对,因此,也可以断定values目录是用来保存字符串资源的。实际上,在Android应用程序中还可以包含除这3种资源外的更多资源。下一节将介绍Android应用程序中可以包含的资源。
       资源的种类
       Android支持3种类型的资源:XML文件、图像以及任意类型的资源(例如,音频、视频文件)。这些资源文件分别放在res目录的不同子目录中。在编译Android应用程序的同时,系统会使用一个资源文件编译程序(aapt)对这些资源文件进行编译。表3.1是Android支持的资源列表。
效果图:

       资源的基本使用方法

       Android会为每一种资源在R类中生成一个唯一的ID,这个ID是int类型的值。在一般情况下,开发人员并不需要管这个类,更不需要修改这个类,只需要直接使用R类中的ID即可。为了更好地理解使用资源的过程。
Java代码:

  1. package net.blogjava.mobile; 

  2. public final class R {

     

  3. public static final class attr {

     

  4. public static final class drawable {

     

  5. public static final int icon=0x7f020000; 

  6. public static final class id {

     

  7. public static final int btnShowDate=0x7f050000; 

  8. public static final int btnShowTime=0x7f050001; 

  9. public static final class layout {

     

  10. public static final int main=0x7f030000; 

  11. public static final class string {

     

  12. public static final int app_name=0x7f040001; 

  13. public static final int hello=0x7f040000; 

  14. }

  15.         从R类中很容易看出,ADT为res目录中每一个子目录或标签(例如,<string>标签)都生成了一个静态的子类,不仅如此,还为XML布局文件中的每一个指定id属性的组件生成了唯一的ID,并封装在id子类中。这就意味着在Android应用程序中可以通过ID使用这些组件。
           R类虽然也属于net.blogjava.mobile包,但在Eclipse工程中为了将R类与其他的Java类区分开,将R类放在gen目录中。
           既可以在程序中引用资源,也可以在XML文件中引用资源。例如,在应用程序中获得btnShowDate按钮对象的代码如下:
    Java代码:

  16. Button btnShowDate = (Button) findViewById(R.id.btnShowDate);

       可以看到,在使用资源时直接引用了R.id.btnShowDate这个ID值,当然,直接使用0x7f050000也可以,不过为了使程序更容易维护,一般会直接使用在R的内嵌类中定义的变量名。
       Android SDK中的很多方法都支持直接使用ID值来引用资源。例如,android.app.Activity类的setTitle方法除了支持以字符串方式设置Activity的标题外,还支持以字符串资源ID的方式设置Activity的标签。例如,下面的代码使用字符串资源重新设置了Activity的标题。
Java代码:

  1. setTitle(R.string.hello);

       除了可以使用Java代码来访问资源外,在XML文件中也可以使用这些资源。例如,引用图像资源可以使用如下格式:
Java代码:

  1. @drawable/icon

       其中icon就是res\drawable目录中的一个图像文件的文件名。这个图像文件可以是任何Android支持的图像类型,例如,gif、jpg等。因此,在drawable目录中不能存在同名的图像文件,例如,icon.gif和icon.jpg不能同时放在drawable目录中,这是因为在生成资源ID时并没有考虑文件的扩展名,所以会在同一个类中生成两个同名的变量,从而造成Java编译器无法成功编译R.java文件。

转载于:https://my.oschina.net/u/1463230/blog/260741

你可能感兴趣的文章
微信小程序刚出,小程序分析服务就出来了
查看>>
PHP 中 9 大缓存技术总结
查看>>
起死回生的Android TV有什么不一样?
查看>>
HTML5游戏开发经验及开发工具分享
查看>>
签约百度推进互联网+交通 西安打造智慧城市
查看>>
Git 入门级命令锦集
查看>>
parcel初体验
查看>>
强行来一波Dagger2使用介绍
查看>>
区块链100讲:零知识证明算法之zkSNARKs
查看>>
cloud
查看>>
Vue递归组件+Vuex开发树形组件Tree--递归组件
查看>>
ffmpeg 视频压缩
查看>>
你应该知道的JS: reduce的n种应用
查看>>
Juniper防火墙配置
查看>>
PHP编码规范(PSR-3)-日志接口规范
查看>>
人生职业规划
查看>>
Servlet,Filter,Listener,Interceptor的作用和区别
查看>>
VC中Ansi、Unicode、UTF8字符串之间的转换和写入文本
查看>>
北京邮电大学加入ONOS 系国内首个高校成员单位
查看>>
Binder进程间通信(附)---- binder结构体说明
查看>>