[Android]Activity的创建

来源:互联网 发布:浏览器打开淘宝app 编辑:程序博客网 时间:2024/06/05 07:06

1. 创建Activitty

首先,我们用Android Studio创建一个空的Android项目,然后创建一个Activity,命名为FirstActivity,继承自Activity,代码如下:

public class FirstActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }}

2. 添加布局文件

然后创建和加载布局文件,命名为:first_layout.xml,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" ></LinearLayout>

3. 增加一个按钮:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <Button    android:id="@+id/button_1"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="Button 1"    /></LinearLayout>

这里添加了一个 Button 元素,并在 Button 元素的内部增加了几个属性。
android:id 是给当前的元素定义一个唯一标识符,之后可以在代码中对这个元素进行操作。你可能会对@+id/button_1 这种语法感到陌生,但如果把加号去掉,变成@id/button_1,这你就会觉得有些熟悉了吧,这不就是在 XML 中引用资源的语法吗,只不过是把 string 替换成了 id。是的,如果你需要在 XML 中引用一个 id,就使用@id/id_name 这种语法,而如果你需要在 XML 中定义一个 id,则要使用@+id/id_name 这种语法。
android:layout_width 指定了当前元素的宽度,这里使用 match_parent 表示让当前元素和父元素一样宽。
android:layout_height 指定了当前元素的高度,这里使用 wrap_content,表示当前元素的高度只要能刚好包含里面的内容就行。
android:text 指定了元素中显示的文字内容。

4. 应用布局文件

将这个布局文件应用到创建的第一个Activity:

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

可以看到,这里调用了 setContentView()方法来给当前的活动加载一个布局,而在setContentView()方法中,我们一般都会传入一个布局文件的 id。在第一章介绍 gen 目录的时候我有提到过,项目中添加的任何资源都会在 R 文件中生成一个相应的资源 id,因此我们刚才创建的first_layout.xml 布局的 id 现在应该是已经添加到 R 文件中了。在代码中去引用布局文件的方法你也已经学过了,只需要调用 .layout.first_layout 就可以得到 first_layout.xml布局的 id,然后将这个值传入setContentView()方法即可。注意这里我们使用的 R,是com.example.activitytest 包下的 R 文件,Android SDK 还会自动提供一个 android 包下的 R 文件,千万别使用错了。

5. 在 AndroidManifest 文件中注册

所有的活动都要在 AndroidManifest.xml 中进行注册才能生效,那么我们现在就打开 AndroidManifest.xml 来给 FirstActivity 注册吧,代码如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.activitytest"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk    android:minSdkVersion="14"    android:targetSdkVersion="19" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".FirstActivity"            android:label="This is FirstActivity" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

可以看到,活动的注册声明要放在标签内,这里是通过标签来对活动进行注册的。首先我们要使用 android:name 来指定具体注册哪一个活动,那么这里填入的.FirstActivity 是什么意思呢?

其实这不过就是 com.example.activitytest.FirstActivity 的缩写而已 。由于最 外层的 标签 中已经通 过 package 属性 指定了程 序的包 名是com.example.activitytest,因此在注册活动时这一部分就可以省略了,直接使用.FirstActivity就足够了。然后我们使用了android:label 指定活动中标题栏的内容,标题栏是显示在活动最顶部的,待会儿运行的时候你就会看到。需要注意的是,给主活动指定的 label 不仅会成为标题栏中的内容,还会成为启动器(Launcher)中应用程序显示的名称。之后在标签的内部我们加入了标签,并在这个标签里添加了“android.intent.action.MAIN” />和这两句声明。这个我在前面也已经解释过了,如果你想让 FirstActivity 作为我们这个程序的主活动, 即点击桌面应用程序图标时首先打开的就是这个活动, 那就一定要加入这两句声明。

另外需要注意,如果你的应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他的应用在内部进行调用的,如支付宝快捷支付服务。

6. 效果

这里写图片描述

0 0
原创粉丝点击