活動是什么
活動其實是一組包含用戶界面的組件,主要用于和用戶進行交互。
活動的創建
現在我們來手動創建活動,首先打開Android Studio,新建一個項目,項目名為ActivityTest,包名選擇默認的com.example.activitytest,在活動界面選擇Add No Activity,點擊finish完成項目的創建。
打開項目之后,在app/java/com.example.activitytest目錄中,右鍵com.example.activitytest新建Java Class取名為FirstActivity,輸入如下代碼:
package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
public class FirstActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
}
這里的onCreate()方法在項目中是需要重寫的,這里只是簡單的調用了父類的onCreate()方法,接下來我們將繼續加入更多的邏輯。
創建和加載布局
Android的程序設計講究邏輯和視圖分離,最好是一個活動對應一個布局,布局就是用來顯示界面內容的,下面我們就來創建一個布局。
在app/res目錄下右鍵新建Android resource Directory,中選擇layout類型,目錄名稱為layout,右鍵layout目錄新建layout resource file,名稱為first_layout,根元素選擇默認的LinearLayout。創建完成之后的界面如下所示:
在Android Studio1.3.x版本當中,我們可以在Text界面一邊編寫xml的布局代碼,一邊預覽界面。
可以看出初始的代碼為:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
下面我們來添加一個按鈕:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/button_1"/>
</LinearLayout>
可以看出,我們添加的Button元素有幾個屬性,下面來一一解釋這些屬性:
- 首先是id屬性,我們定義一個id來唯一標志這個元素,如果是定義id,則語法為@+id/buttn_1,如果是直接引用某個id,則為@id/button_1。
- 然后是layout_width和layout_height屬性,分別表示組件的寬和高,math_parent表示讓當前元素和父元素一樣,wrap_content表示正好包含組件內容
- 最后是text屬性,他表示Button按鈕上的內容,這里我們用了@string/button_1的寫法,表示調用res/value/string.xml里面的屬性,button_1在其中定義。
添加完Button屬性之后我們可以在右邊的preview中看到界面:
界面完成之后,我們回到FirstActivity.java中,把他與活動聯系起來:
package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
public class FirstActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
}
}
在這里我們調用了setContentView()方法,里面傳入的參數是first_layout.xml的布局文件名稱。
當我們的活動和布局完成之后,我們需要在app/manifests/AndroidMainifest.xml中注冊活動,否則無法運行:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activitytest">
<application android:allowBackup="true" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher" 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>
聲明需要放在<application>標簽中,通過<activity>標簽來對活動進行注冊。我們通過name屬性來指明我們要注冊的活動是哪一個,因為在<manifest>標簽中已經設置了package為.example.activitytest,所以這里我們只需要用相對路徑來指明,即.FirstActivity,label屬性為標題欄。intent-filter來設置該活動為主活動。
這時候我們就可以運行該項目了: