本文参考自《精通android3》

在android程序设计中,资源扮演者重要的角色,它是可以绑定到可执行程序中的文件或值,无需重新编译和重新部署应用程序就能够更改它们。android依靠资源以声明性方式定义UI组件,熟悉的资源示例包括字符串、颜色和位图等。下面概要介绍下资源的使用。

1.字符串资源

android允许在一个或多个XML资源文件中定义多个字符串,这些XML文件位于工程的/res/values子目录下,XML文件的名称可任意指定,但常见的文件名是strings.xml。如:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns="http://schemas.android.com/apk/res/android">
<string name="app_name">Resource</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>

当创建或更新此文件时,ADT插件将使用三个指定的字符串资源的唯一ID,在应用程序的根包R.java中自动创建或更新一个Java类。打开/gen/com..../R.java文件,会发现如下代码:

public final class R{
......
public static final class string {
public static final int action_settings=0x7f050001;
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050002;
}
......
}

这是一个静态的内部类,它无需实例化即可直接调用,另外“action_settings”、“app_name”等是ADT插件生成的唯一ID,其类型为int型,而非String类型,在使用时调用R.string.action_settings即可,android会自动将其解析为String。


2.布局资源

在android中,屏幕的视图通常以资源的形式从XML文件加载,这些XML文件称为布局资源。在来看看MainActivity.java文件的代码段:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

从setContentView(R.layout.activity_main)这里可以看到一个静态类R.layout(同样定义在/gen/com..../R.java文件中),这个类中常量activity_main(同字符串资源一样也是int型)指向XML布局资源文件定义的一个View,此文件名为activity_main.xml,在/res/layout目录下,代码清单如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>

代码清单中布局文件定义了一个根节点RelativeLayout,它包含了一个TextView。android中,需要为每个屏幕(或Activity)定义一个独立的布局文件,如果需要绘制两个屏幕,则需要两个布局文件。ADT会根据每个文件的文件名生成一个唯一常量以供编码使用。


3.资源引用语法

无论什么类型的android资源,都使用它们在JAVA源代码中的ID来标识,将ID分配给XML文件中资源的语法称为资源引用语法,其语法结构为:

@[package:]type/name

其中type对应于R.java中一种可用的资源类型命名空间,包括:R.drawable、R.id、R.layout、R.string、R.attr、R.plural、R.array。 name部分是提供给资源的名称,如上面提到过的activity_main。 package可有可无,目前尚不知如何使用。


通过上面我们可以知道android资源的大致使用方法,后面将进一步学习各种资源的具体使用。


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. 分支和循环(二)(零基础学习C语言)
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  7. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  8. 如何提高Android代码的安全性
  9. Android运行时异常“Binary XML file line # : Error inflating

随机推荐

  1. flex项目上的三个属性
  2. flex容器中的四个属性的功能,参数,以及作用
  3. 传统定位布三行三列和flex布局
  4. tomcat启动后台日志乱码
  5. 面试题:文本摘要中的NLP技术
  6. 请用Python手写实现插入排序
  7. 电脑本地换IP用派克斯如何实现
  8. 面试题:预训练方法 BERT和OpenAI GPT有什
  9. cp网站源码安装步骤详情
  10. ORA-29770: global enqueue process LMS