活動(Activity)的基本操作

smilestone322發表於2019-03-16

轉自: https://blog.csdn.net/qq_32949807/article/details/60590986

 

活動(Acitivity),是一種可以包含使用者介面的元件,主要用於與使用者互動。
關閉現有的專案,自己先建立一個新的專案:
起名叫做AcivityTest,這裡建立活動時選擇Add no Activity

然後按照圖中所示路徑開啟

緊接著右擊這個空白的com.example.activitytast包->New->Activity->Empty Activity,在彈出的建立活動對話方塊中選擇命名活動為FirstActivity,切不要勾選 generate layout File 和 launcher activity 這兩個選項。
第一個選項代表會自動為FirstActivity建立一個對應的佈局檔案,第二個表示會自動將FirstActivity設定為當前專案的主活動,這裡我們選擇手動來完成這些活動。
BackwardsCompatibility表示會為專案啟動向下相容的模式。最後選擇finish來表示專案建立完成。

專案中的任何活動都必須要重寫Acitivity 中的 onCreat()方法,目前Android Studio已經自動幫我們重寫了這個方法:

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}


這裡看到重寫的放大就是呼叫了父類的onCreat()方法,這是預設的實現方式。
建立和載入佈局:
因為安卓程式的設計很講究邏輯和檢視的分離,所以最好每一個活動都能對應一個佈局,佈局就用來顯示介面內容的。
右擊app/src/main/res目錄選擇新建一個名為layout的目錄
然後右擊layout如圖選擇

將這個佈局檔案命名為first_layout,根元素就選擇預設的 LinearLayout。
點ok後就可以看到佈局編輯器,這是Android studio 提供的視覺化佈局編輯器,可以再螢幕中央預覽當前佈局,視窗最下方有兩個切換卡,design是當前的視覺化佈局編輯器,可以通過拖放的方式編輯佈局,Text是通過XML檔案的方式來編輯佈局的,點選text切換卡就可以看到程式碼:

<?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>
因為剛才在建立佈局檔案的時候已經選擇了Linear Layout 作為根元素,現在對這個佈局做編輯,新增一個按鈕:


<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="Button 1"/> 

</LinearLayout>

這裡新增了一個button元素,並在button元素的內部增加幾個屬性。
Android:id是給當前的元素定義了一個唯一的識別符號,之後可以在程式碼中對這個元素進行操作。
@+id/buttton_1 這個語法是在XML 中定義一個id的方法,@id/button_1是在XML中引用一個id的語法,其中改掉id,為string等等就是引用資源的方法。
Android:layout_width指定了當前元素的寬度,這裡設定成match_parent表示讓當前元素和父元素一樣寬,同理android:layput_height是指當前元素的高度,wrap_content表示要與表示當前的元素只要剛好包含裡面的呢內容就行。
現在按鈕已經新增完了,通過可以通過右側工具欄的Preview來預覽一下當前佈局。
看到button1就是建立成功了,這樣就是已經編寫了一個簡單的佈局。
接下來就是在活動中載入這個佈局。
回到FirstActivity,在onCreat()中加入加粗位置的程式碼:

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
    }
}
這裡呼叫了一個setContentView()方法來載入佈局,這裡的方法就是傳入一個佈局檔案的id,專案中新增的任何資源都會在R檔案中生成一個資源id。所以我們建立的佈局檔案已經在R檔案中了,這裡可以總結得到一個檔案id的方法就是R.layout.first_out就可以得到這個XML 這個佈局檔案的id,接著傳入setContentView()即可。


所有的活動在AndroidManifest.xml中進行註冊才能生效,實際上Android studio已經幫助我們註冊好了。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.activitytest">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".FirstActivity"></activity>
    </application>

</manifest>
這是在Androidmanifest.xml檔案中的程式碼,活動的註冊在<application>當中,其中android:name 指明瞭具體註冊的是哪一個活動,填入的.activity說明是com.example.activitytest.FirstActivity的縮寫,因為這個檔案已經預設包含在這個程式的包中,在外層的package已經指明瞭這點,所以直接使用了.FirstActivity就足夠了。


但是這樣註冊了活動還是不能夠執行這個活動,因為沒有為程式配置主活動,程式執行時不知道從哪裡來啟動這個活動,配置的方法就是:
在<Activity>標籤的內部加入<intent-filter>標籤並在這裡標籤裡面新增<action android:name="android.intent.action.MAIN"/>和<category android:name="android.intent.category.LAUNCHER"/>這兩句宣告即可。
除此之外,android:lable指定活動中標題欄中的內容,主活動的lable不僅會成為標題欄中的內容,還會成為(Launcher)中應用程式顯示的名稱。

這樣修改完畢之後的程式碼就可以執行了,就可以讓FirstActivity成為我們程式的主活動程式。
得到下圖的結果就代表著我們成功的建立了一個活動。

 

最後在這裡我們簡單地對建立一個活動進行總結:
1.不選擇原來的empty activity而是選擇add no activity 來建立(這是因為我們只選擇新增一些簡單地活動);
2.在app/src/mian/java/com.example.adminstrator.activitest 這個資料夾中右擊新增一個empty  activity;
3.新增布局檔案並且確定主活動(這一步實際上可以讓Android studio幫我們自動完成,但是因為是第一次建立所以我們手動新增);
4.載入佈局:
1)app/src/main/res中新建一個layout目錄;
2)右擊layout新建 layout resource file;
3)在佈局編輯中選擇XML 模式來新增一個按鈕button,設定對應的id號(需要考慮特殊的@+語法)、高度寬度和標籤;
4)在onCreat()方法中使用setContentView(id號)方法來載入這個佈局;
5.載入並確定主活動:
修改Androidmanifest.xml中的程式碼,新增兩句宣告來確定主程式。