Android 第五課——Activity基礎

1 Activity 概念 java

    呈如今手機上的視圖界面,相似於web程序的Servlet,它的父類是Context(上下文)。android

2 Activity 建立web

    1)新建一個繼承Activity的類緩存

    2)重寫onCreate方法,這個方法會在Activity啓動時第一個被調用,在這個方法中咱們通常會有這兩個步驟:app

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    3)在AndroidManifest中註冊Activity,AndroidManifest文件猶如web程序中的web.xml文件佈局

       <activity
            android:name="com.hnust.moon.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".OtherActivity"
            android:label="other_activity">
        </activity>

    4)一個Activity只是一個視圖,咱們須要在視圖中設置UI佈局,那麼還要放置組件在Activity中。this

3 多個Activity之間相互切換spa

    假設咱們按照以上步驟已經建立了兩個Activity,這時咱們能夠經過intent進行數據動做調用:code

    MainActivity中:xml

    Intent intent = new Intent();
    intent.setClass(MainActivity.this, OtherActivity.class);
    intent.putExtra("name", "heweipo_test");
    MainActivity.this.startActivity(intent);
    OtherActivity中
    Intent intent = this.getIntent();
    String value = intent.getStringExtra("name");
    .....

4 Activity中添加菜單

    1)首先繼承ActionBarActivity

    2)重寫onCreateOptionsMenu和onOptionsItemSelected;前者是按下菜單按鈕時觸發的事件,咱們通常在這裏初始化菜單的組件;後者是當菜單的具體某一項被點擊時觸發,這裏主要是編寫每個菜單項的具體業務功能。

    3)java代碼初始化菜單組件以下:onCreateOptionsMenu 具體實現

    menu.add(0, 8080, 1, R.string.exit);//menu.add(group,itemID,order,title);
    menu.add("file");
    SubMenu sub = menu.addSubMenu("sub"); 
    sub.add(group,itemID,order,title);//添加子菜單使用 
    getMenuInflater().inflate(R.menu.main, menu); //從資源文件中找到name爲main.xml的文件而後強制轉爲當前activity下的菜單。

    XML文件實現

    <item
        android:id="@+id/mainActivity_operation"
        android:title="@string/mainActivity_operations"
        >
        <menu>
            <item
                android:id="@+id/menu_addition"
          android:title="@string/addition"
          />
            <item
                android:id="@+id/menu_subtraction"
          android:title="@string/subtraction"
          />
        </menu>
      </item>
    <group android:id="group"> 菜單分組控制
        <item android:id="@+id/file2" android:title="file2"></item>
        <item android:id="@+id/file3" android:title="file3"></item>
    </group>

    4)關於菜單項點擊時具體處理:onOptionsItemSelected

        int id = item.getItemId();
        switch (id) {
  case R.id.action_settings:
   break;
  case 8080:
   finish();
   break;
 }
        return super.onOptionsItemSelected(item);

5 橫屏與豎屏

1)activity初始化時或者橫豎屏切換時 onCreate方法都會被調用。關於這個問題,若是咱們的在activity中剛剛輸入了部份內容,結果

由於屏幕橫豎發生變化,會不會致使之前內容丟失呢?Google是這樣解決的問題的,若是橫屏和豎屏中layout的組件有相同的ID,那麼Google會緩存這部份內容,根據ID在對應的組件上添加之前的內容,可是要是沒有ID,或者找不到ID,那麼這些內容確定會丟失!另外,賦值這些內容並非在onCreate方法調用以前而是以後,因此在onCreate方法是不可能獲取到緩存的值的,同時咱們也不能在onCreate方法中爲組件賦值,由於會被覆蓋。橫屏或豎屏分開佈局只要新建兩個與layout同目錄下的文件夾layout_land與layout_port.

2)onConfigurationChanged(configure)

<activity android:name="..." android:configChanges="orientation|keyboardHidden|screen...">
    <intent-filter>........</intent-filter>
</activity>

若是咱們在配置文件以下指定,那麼橫豎屏替換時,就不會調用onCreate方法,而是調用onConfigurationChanged

this.getResources().getConfiguration().orientation ,configure.orientation  一樣能夠判斷方向。

3)控制橫屏與豎屏是在AndroidManifest文件中Activity中設置android:screenOrientation值,有以下幾個值:

  1. unspecified 默認值,由系統判斷狀態自動切換  

  2. landscape 橫屏  

  3. portrait 豎屏  

  4. user 用戶當前設置的orientation值 

  5. behind 下一個要顯示的Activity的orientation值 

  6. sensor 使用傳感器 傳感器的方向  

  7. nosensor 不使用傳感器 基本等同於unspecified

相關文章
相關標籤/搜索