转载 《Android程序运行过程,Android》
程序的运行由主配置文件开始AndroidManifest.xml:
?
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.changcheng.android"
android:versionCode="1"
android:versionName="1.0">
<!--
@drawable/icon:
@代表R.java
drawable是R.java的静态内部类
icon是drawable的常量,指定图片资源的ID。
-->
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<!--
.HelloWorld指向package="com.changcheng.android"下面的HelloWorld类。
我们可以在此添加子包.sub.xxxClass,但不能添加上级包。
-->
<activityandroid:name=".HelloWorld"
android:label="@string/app_name">
<!--意图过滤,程序加载由此开始向外。-->
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<!--本程序使用AndoridSDK的最低版本-->
<uses-sdkandroid:minSdkVersion="7"/>
</manifest>
?
接下来从HelloWorld类开始:
?
packagecom.changcheng.android;
?
importandroid.app.Activity;
importandroid.os.Bundle;
?
/**
*我们的HelloWorld类,继承自Activity类。
*
*/
publicclassHelloWorldextendsActivity
{
/** Called when the activity is first created. */
@Override
publicvoidonCreate(Bundle savedInstanceState) {
//在此方法中完成界面的绘制
super.onCreate(savedInstanceState);
//显示R.java文件中的layout静态内部类的main常量。它指向mail.xml
setContentView(R.layout.main);
}
}
?
然后再我们再看看mail.xml:
?
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!--
文本视图控件
android:layout_width="fill_parent",它的父窗口是屏幕,所以宽度为整个屏幕。
android:layout_height="wrap_content",它的高度为它所包含的内容高度。如果内容中有一行,就是一行的高度。
android:text="@string/hello",它包含(显示)的文本内容,指向R.java中string静态内部类的常量hello所指向的文本资源ID,文本资源文件是strings.xml。
-->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
?
?
再看看Strings.xml:
?
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="hello">HelloWorld,Hello World!</string>
</resources>
?
现在让我们看看掌管资源的主文件R.java:
?
packagecom.changcheng.android;
?
publicfinalclassR {
publicstaticfinalclassattr {
}
//图片资源
publicstaticfinalclassdrawable {
publicstaticfinalinticon=0x7f020000;
}
//界面布局资源
publicstaticfinalclasslayout {
publicstaticfinalintmain=0x7f030000;
}
//字符串资源
publicstaticfinalclassstring {
publicstaticfinalintapp_name=0x7f040001;
publicstaticfinalinthello=0x7f040000;
}
}
R.java文件中的所有资源ID全部是自动生成的,我们不可以手动编辑。当我们添加一个图片时,ADT插件,会以图片的名称为常量的名称,然后自动生成对应的资源ID。当我们向strings.xml中添加一个字符串时,ADT插件会以符串的名称为常量的名称,然后自动生成对应的资源ID。
?
R.java文件不需要我们手动编辑,我们只需要在需要使用到资源的地方引用这个文件里标识的资源即可!
?
转自 http://hi.baidu.com/%B3%C1%CF%E3%DC%F8/blog/item/d9d06d3594cfca0890ef39ba.html