Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android入門第十五篇之ActivityGroup實現Tab分頁標簽

Android入門第十五篇之ActivityGroup實現Tab分頁標簽

編輯:Android開發實例

    很多客戶端軟件和浏覽器軟件都喜歡用Tab分頁標簽來管理內容,除了可以用TabHost控件,還可以用ImageButton + ActivityGroup實現Tab分頁標簽。使用ImageButton + ActivityGroup實現Tab分頁標簽,主要是把一個Sub Activity(子Activity)的Window作為View添加到ActivityGroup所指定的容器中,本文使用LinearLayout作為容器裝載Sub Activity。

接下來貼出本例運行的效果圖:

以下是切換時Sub Activity的生存周期的狀態變化:

從subActivity1切換到subActivity2的時候,會徹底釋放subActivity1的資源。

主Activity的main.xml的源碼如下:

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" android:layout_width="fill_parent" 
  4.     android:layout_height="fill_parent"> 
  5.     <LinearLayout android:id="@+id/LinearLayout01" 
  6.         android:layout_height="wrap_content" android:layout_width="fill_parent"> 
  7.         <ImageButton android:layout_width="wrap_content" 
  8.             android:layout_height="wrap_content" android:id="@+id/ibtnTab1" 
  9.             android:background="@drawable/png1298"></ImageButton> 
  10.         <ImageButton android:layout_width="wrap_content" 
  11.             android:layout_height="wrap_content" android:id="@+id/ibtnTab2" 
  12.             android:background="@drawable/png1292"></ImageButton> 
  13.     </LinearLayout> 
  14.     <LinearLayout android:id="@+id/LinearLayout02" 
  15.         android:layout_width="fill_parent" android:layout_height="fill_parent"></LinearLayout> 
  16. </LinearLayout> 

Sub Activity的XML源碼(listview.xml)如下:

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout android:id="@+id/LinearLayout01" 
  3.     xmlns:android="http://schemas.android.com/apk/res/android" 
  4.     android:layout_width="fill_parent" android:layout_height="fill_parent"> 
  5.     <ListView android:id="@+id/MyListView" android:layout_width="fill_parent" 
  6.         android:layout_height="fill_parent"> 
  7.     </ListView> 
  8. </LinearLayout>   

testActivityGroup.java源碼如下:

 

  1. package com.testActivityGroup;  
  2.  
  3. import android.app.ActivityGroup;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.Window;  
  8. import android.widget.ImageButton;  
  9. import android.widget.LinearLayout;  
  10. import android.widget.ListView;  
  11.  
  12. public class testActivityGroup extends ActivityGroup {  
  13.     /** Called when the activity is first created. */ 
  14.     LinearLayout container;//裝載sub Activity的容器  
  15.     ImageButton ibtnTab1,ibtnTab2;  
  16.     @Override 
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.           
  21.         container = (LinearLayout) findViewById(R.id.LinearLayout02);  
  22.         ibtnTab1=(ImageButton)this.findViewById(R.id.ibtnTab1);  
  23.         ibtnTab1.setOnClickListener(new ClickEvent());  
  24.         ibtnTab2=(ImageButton)this.findViewById(R.id.ibtnTab2);  
  25.         ibtnTab2.setOnClickListener(new ClickEvent());  
  26.     }  
  27.       
  28.     class ClickEvent implements View.OnClickListener{  
  29.  
  30.         @Override 
  31.         public void onClick(View v) {  
  32.             container.removeAllViews();  
  33.             Intent intent=new Intent(testActivityGroup.this, subActivity.class);  
  34.             intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
  35.             String[] str=new String[12];  
  36.             if(v==ibtnTab1)  
  37.             {  
  38.                 for(int i=0;i<str.length;i++)  
  39.                     str[i]="單選"+String.valueOf(i);  
  40.                 intent.putExtra("Name", "subActivity1");  
  41.                 intent.putExtra("Strings", str);  
  42.                 intent.putExtra("ChoiceMode", ListView.CHOICE_MODE_SINGLE);//通過參數設置列表式樣  
  43.             }  
  44.             else if(v==ibtnTab2)  
  45.             {  
  46.                 for(int i=0;i<str.length;i++)  
  47.                     str[i]="復選"+String.valueOf(i);  
  48.                 intent.putExtra("Name", "subActivity2");  
  49.                 intent.putExtra("Strings", str);  
  50.                 intent.putExtra("ChoiceMode", ListView.CHOICE_MODE_MULTIPLE);//通過參數設置列表式樣  
  51.             }  
  52.  
  53.             Window subActivity=getLocalActivityManager().startActivity("subActivity",intent);  
  54.             container.addView(subActivity.getDecorView());  
  55.         }  
  56.           
  57.     }  

subActivity.java源碼如下:

 

  1. package com.testActivityGroup;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. import android.widget.ArrayAdapter;  
  7. import android.widget.ListView;  
  8.  
  9. public class subActivity extends Activity {  
  10.     String name;  
  11.  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.listview);  
  15.  
  16.         // 讀取列表內容  
  17.         name = this.getIntent().getStringExtra("Name");  
  18.         String[] str = this.getIntent().getStringArrayExtra("Strings");  
  19.         int choiceMode = this.getIntent().getIntExtra("ChoiceMode",  
  20.                 ListView.CHOICE_MODE_NONE);  
  21.  
  22.         ListView listView = (ListView) findViewById(R.id.MyListView);  
  23.  
  24.         // 設置列表的式樣  
  25.         int itemID = android.R.layout.simple_list_item_1;  
  26.         if (choiceMode == ListView.CHOICE_MODE_MULTIPLE)// 主Activity要求多選  
  27.             itemID = android.R.layout.simple_list_item_multiple_choice;  
  28.         else if (choiceMode == ListView.CHOICE_MODE_SINGLE)// 主Activity要求單選  
  29.             itemID = android.R.layout.simple_list_item_single_choice;  
  30.  
  31.         ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,  
  32.                 itemID, str);  
  33.         listView.setAdapter(arrayAdapter);  
  34.  
  35.         listView.setChoiceMode(choiceMode);  
  36.  
  37.         Log.e(name, "onCreate");// 顯示當前狀態,onCreate與onDestroy對應  
  38.     }  
  39.     @Override 
  40.     public void onDestroy() {  
  41.         super.onDestroy();  
  42.         Log.e(name, "onDestroy");// 顯示當前狀態,onCreate與onDestroy對應  
  43.     }  
  44.  
  45.     @Override 
  46.     public void onStart() {  
  47.         super.onStart();  
  48.         Log.e(name, "onStart");// 顯示當前狀態,onStart與onStop對應  
  49.     }  
  50.  
  51.     @Override 
  52.     public void onStop() {  
  53.         super.onStop();  
  54.         Log.e(name, "onStop");// 顯示當前狀態,onStart與onStop對應  
  55.     }  
  56.  
  57.     @Override 
  58.     public void onRestart() {  
  59.         super.onRestart();  
  60.         Log.e(name, "onRestart");  
  61.     }  
  62.  
  63.     @Override 
  64.     public void onResume() {  
  65.         super.onResume();  
  66.         Log.e(name, "onResume");// 顯示當前狀態,onPause與onResume對應  
  67.     }  
  68.  
  69.     @Override 
  70.     public void onPause() {  
  71.         super.onResume();  
  72.         Log.e(name, "onPause");// 顯示當前狀態,onPause與onResume對應  
  73.     }  
  74. }  

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved