星期二, 10月 25, 2011

Activity (二)

Android應用程式學習筆記

Creating an Activity


建立一個activity,你必須建立Activity類的子類,在子類,你需要實現回調方法,系統會在activity專換不同生命週期狀態時呼叫,比如,activity建立、停止、恢復、銷毀,兩個最重要的回調方法是:
onCreate()
你必定實現此方法,系統建立你的activity時呼叫此方法,在實現此方法中,你應該初始化你的activity中重要的變數。最重要的是,這是你必須呼叫setContentView()方法去顯示activity的使用者介面的地方。
onPause()
當用戶離開你的activity時,系統呼叫此方法, 這通常是你應該堅持保存任何改變超過目前用戶的使用期間。


Implementing a user interface

 Activity的使用者介面是由view的階層所提供,每個view控制activity的視窗中特定的矩形空間,並且可以回應用戶的互動,比如,view可以是一個按鈕,當用戶觸碰它時啟動動作。

Android提供許多現成的views,你可以使用來設計及組織你的布局,"Widget"是view,桌面的小工具,"Layouts"由ViewGroup衍生的View,比如,線性布局或是相關布局,你可以運用view及viewgroup來創造你的桌面小工具或是布局,然後應用在你的activity上。

使用view定義布局最普遍的方式是存在你的應用程式資源中的XML布局文件,這樣的方式,你可以維護從定義應用程式行為的程式碼中分離的使用者介面的設計。你可以利用setContentView()方法傳入布局文件的ID,將布局文件設置為使用者介面。


Declaring the activity in the manifest

你必須在manifest文件中宣告你的activity,這樣系統才可以存取。宣告activity,打開你的manifest文件,並在<application>標籤範圍內加入<activity>標籤。例如:


<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...</manifest >

有許多屬性你可以包含在此標籤中去定義activity的屬性,比如activity的標題、activity的圖像或是activity的使用者介面主題風格。android:name屬性是唯一一定要有的屬性。一旦你發行了應用程式,你就不應該改變這個名稱,因為如果你改變了,可能會破壞一些功能,比如,應用程式的捷徑。


Using intent filters

<activity>標籤也可以利用<intent-filter>指定多個intent過濾器,為了就是讓其他應用程式也可以活化它。

當你使用Android SDK工具建立新的應用程式時,工具自動地為你建立activity,它包含一個intent過濾器用來回應"main"動作,intent過濾器看起來像:


<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<action>標籤指定了activity是應用程式的"main"的進入點,<category>標籤指定該activity應該被列表在系統上,讓用戶可以啟動它。

如果你不想允許你的應用程式受其他應用程式的activities活化,那你就不需要任何intent過濾器,只需要有"main"action和"Launcher"cagetory。

然而,如果你想你的activity回應從其他應用程式傳來的明確intent,那就必須為你的activity另外加上intent過濾器,每個過濾器必須有<intent-filter>標籤,<intent-filter>標籤必須包含<action>標籤,選擇性包含<category>標籤及<data>標籤,這些標籤決定你的activity回應那一種形式的intent。

沒有留言:

張貼留言