<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.tomtalk.net/index.php?action=history&amp;feed=atom&amp;title=PA03</id>
		<title>PA03 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.tomtalk.net/index.php?action=history&amp;feed=atom&amp;title=PA03"/>
		<link rel="alternate" type="text/html" href="http://wiki.tomtalk.net/index.php?title=PA03&amp;action=history"/>
		<updated>2026-04-24T04:18:04Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>http://wiki.tomtalk.net/index.php?title=PA03&amp;diff=3276&amp;oldid=prev</id>
		<title>Tom：移动Android chapter 3至PA03</title>
		<link rel="alternate" type="text/html" href="http://wiki.tomtalk.net/index.php?title=PA03&amp;diff=3276&amp;oldid=prev"/>
				<updated>2013-02-03T00:06:01Z</updated>
		
		<summary type="html">&lt;p&gt;移动&lt;a href=&quot;/index.php?title=Android_chapter_3&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Android chapter 3（页面不存在）&quot;&gt;Android chapter 3&lt;/a&gt;至&lt;a href=&quot;/index.php?title=PA03&quot; title=&quot;PA03&quot;&gt;PA03&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;本章及接下来几章将深入分析Android SDK的基本原理，探讨资源、ContentProvider和Intent。这3个概念是理解Android编程的基础，为理解后继章节的内容打下坚实的基础。&lt;br /&gt;
&lt;br /&gt;
字符串资源&lt;br /&gt;
示例strings.xml文件&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;resource&amp;gt;&lt;br /&gt;
&amp;lt;string name=&amp;quot;hello&amp;quot;&amp;gt;hello&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name=&amp;quot;app_name&amp;quot;&amp;gt;hello appname&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/resource&amp;gt;&lt;br /&gt;
&lt;br /&gt;
无论有多少资源文件，始终只有一个R.java文件。&lt;br /&gt;
&lt;br /&gt;
R.java示例&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public final class R {&lt;br /&gt;
    ...other entries depending on your project and application&lt;br /&gt;
    public static final class string&lt;br /&gt;
    {&lt;br /&gt;
        ...other entries depending on your project and application&lt;br /&gt;
        public static final int hello=0x7f040000;&lt;br /&gt;
        public static final int app_name=0x7f040001;&lt;br /&gt;
        ...other entries depending on your project and application&lt;br /&gt;
    }&lt;br /&gt;
    ...other entries depending on your project and application&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
使用变量名hello和app_name定义的两个static final int是资源ID，表示相应的字符串资源。通过R.string.hello可以在源代码中的任何位置使用这些资源ID。&lt;br /&gt;
大多数示例应用程序都在一个strings.xml文件中定义所有字符串，这只不过是一个惯例。android接受任务数量的任意文件，只要xml文件的结构与stings.xml类似，并且文件位于/res/values子目录中。&lt;br /&gt;
&lt;br /&gt;
布局资源&lt;br /&gt;
在android中，屏幕的视图通常以资源的形式从xml文件加载。这些xml文件称为布局资源。&lt;br /&gt;
&lt;br /&gt;
使用布局文件&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class HelloWorldActivity extends Activity&lt;br /&gt;
{&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onCreate(Bundle savedInstanceState)&lt;br /&gt;
    {&lt;br /&gt;
        super.onCreate(savedInstanceState);&lt;br /&gt;
        setContentView(R.layout.main);&lt;br /&gt;
        TextView tv = (TextView)this.findViewById(R.id.text1);&lt;br /&gt;
        tv.setText(&amp;quot;Try this text instead&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    …&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
从setContentView(R.layout.main)这一行可以看到，有一个静态类R.layout，这个类中有一个常量main(一个整数)，它指向xml布局资源文件定义的一个view。这个xml文件名为main.xml，需要将它放在资源的layout子目录下。&lt;br /&gt;
&lt;br /&gt;
示例main.xml布局文件 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;LinearLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;
    android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;
    &amp;gt;&lt;br /&gt;
    &amp;lt;TextView android:id=&amp;quot;@+id/text1&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:text=&amp;quot;@string/hello&amp;quot;&lt;br /&gt;
        /&amp;gt;&lt;br /&gt;
    &amp;lt;Button android:id=&amp;quot;@+id/b1&amp;quot;&lt;br /&gt;
        android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;br /&gt;
        android:text=&amp;quot;@string/hello&amp;quot;&lt;br /&gt;
        /&amp;gt;&lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@+id/text1中的加号(+)表示，如果ID text1不存在，将创建它。&lt;br /&gt;
&lt;br /&gt;
需要为每个屏幕（或activity）定义一个独立的布局文件。更准确来讲，每个布局需要一个专门的文件。如果绘制两个屏幕，可能需要两个布局文件，比如/res/layout/screen1_layout.xml和/res/layout/screen2_layout.xml。&lt;br /&gt;
&lt;br /&gt;
多个布局文件对应多个常量&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static final class layout {&lt;br /&gt;
    .... any other files&lt;br /&gt;
    public static final int file1=0x7f030000;&lt;br /&gt;
    public static final int file2=0x7f030001;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
资源引用语法&lt;br /&gt;
无论什么类型的android资源(到目前为止我们介绍了字符串和布局)都使用它们在java源代码中的id来标识(或引用)。将id分配给xml文件中资源的语法称为资源引用语法。上面的@+id/text1示例中的id特性语法具有以下正式结构：&lt;br /&gt;
@[package:]type/name&lt;br /&gt;
type对应于R.java中一种可用的资源类型命名空间，包括：&lt;br /&gt;
* R.drawable&lt;br /&gt;
* R.id&lt;br /&gt;
* R.layout&lt;br /&gt;
* R.string&lt;br /&gt;
* R.attr&lt;br /&gt;
* R.plural&lt;br /&gt;
* R.array&lt;br /&gt;
&lt;br /&gt;
已编译和未编译的android资源&lt;br /&gt;
如果将资源文件(包括xml文件)放在/res/raw目录下，它们将不会编译为二进制格式。必须使用明确基于流式传输的api来读取这些文件。音频和视频文件属于这一类别。&lt;br /&gt;
资源编译器会编译除raw资源以外的所有资源，并将它们全部放到最终的.apk文件中。此文件包含android应用程序的代码和资源，相当于java中的.jar文件（apk代表android package）。&lt;br /&gt;
&lt;br /&gt;
android关键资源&lt;br /&gt;
看一下ID生成的特征，尽管我们没有看到任何官方声明，但如果xml文件位于除res/values子目录以外的任何地方，那么ID就会基于文件名而生成。如果它们位于values子目录中，则只会根据文件的内容来生成ID。&lt;/div&gt;</summary>
		<author><name>Tom</name></author>	</entry>

	</feed>