本篇博文最后修改时间:2016年3月30日,22:37。
一、简介
本篇分析HelloWorld项目如何运行。
二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。
三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/omoiato
联系方式:315878825@qq.com
Java零基础入门交流群:541462902
四、分析HelloWorld项目如何运行
1、注册HelloWorldActivity活动
打开AndroidManifest.xml 文件
<activity
android:name="com.test.helloworld.HelloWorldActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这段代码表示对HelloWorldActivity 这个活动进行注册。
没有在AndroidManifest.xml 里注册的活动是不能使用的。
其中intent-filter 里的两行代码非常重要,
<action android:name="android.intent.action.MAIN" />
和<category android:name="android.intent.category.LAUNCHER" />
表示HelloWorldActivity 是这个项目的主活动,
在手机上点击应用图标,首先启动的就是这个活动。
2、寻找Hello world!字符串
凡是在打开应用后看到的内容,都放在活动中。
打开HelloWorldActivity,代码如下所示:
public class HelloWorldActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.hello_world_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.hello_world, menu);
return true;
}
}
①Activity:
HelloWorldActivity 是继承自Activity 的。
Activity 是Android 系统提供的一个活动基类,
我们项目中所有的活动都必须要继承它才能拥有活动的特性。
②两个方法:
onCreateOptionsMenu()这个方法是用于创建菜单的,我们可以先无视它。
onCreate()方法是一个活动被创建时必定要执行的方法,其中只有两行代码,并且没有Hello world!的字样
③逻辑和视图分离:
代码中无Hello world!的字样,是因为Android 程序的设计讲究逻辑和视图分离,因此是不推荐在活动中直接编写界面的。
更加通用的一种做法是,在布局文件中编写界面,然后在活动中引入进来。
onCreate()方法的第二行调用了setContentView()方法,
就是这个方法给当前的活动引入了一个hello_world_layout 布局。
④布局文件:
布局文件都是定义在res/layout 目录下的。
展开l目录, 看到hello_world_layout.xml 这个文件。打开之后代码如下所示:
<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=".HelloWorldActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
以后会对布局详细说明,这次只需找到TextView即可。
TextView:这是Android 系统提供的一个控件,用于在布局中显示文字的。
我们可以在TextView 中找到android:text="@string/hello_world"这句代码。
其实真正的应用中输出的Hello world!字符串也不是在布局文件中定义的。
Android不推荐在程序中对字符串进行硬编码。
更好的做法一般是把字符串定义在res/values/strings.xml 里,然后可以在布局文件或代码中引用。
那我们现在打开strings.xml 看一下,里面的内容如下:
<resources>
<string name="app_name">Hello World</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
Hello world!字符串就是定义在这个文件里的。
并且字符串的定义都是使用键值对的形式,Hello world!值对应了一个叫做hello_world 的键,
因此在hello_world_layout.xml 布局文件中就是通过引用了hello_world 这个键,才找到了相应的值。
另外还有一个叫做app_name 的键。
我们还可以在这里通过修改app_name 对应的值,来改变此应用程序的名称。
那到底是哪里引用了app_name 这个键呢?打开AndroidManifest.xml 文件也可以找到!