当前位置:首页>> Android之ActivityGroup实现Tab分页标签

Android之ActivityGroup实现Tab分页标签

发布时间:2011-11-26作者:智汇小新

  很多客户端软件和浏览器软件都喜欢用Tab分页标签来管理内容,除了可以用TabHost控件,还可以用ImageButton + ActivityGroup实现Tab分页标签。使用ImageButton + ActivityGroup实现Tab分页标签,主要是把一个Sub Activity(子Activity)的Window作为View添加到ActivityGroup所指定的容器中,本文使用LinearLayout作为容器装载Sub Activity。

  接下来贴出本例运行的效果图:

接下来贴出本例运行的效果图

 

  以下是切换时Sub Activity的生存周期的状态变化:

切换时Sub Activity的生存周期的状态变化

 

  从subActivity1切换到subActivity2的时候,会彻底释放subActivity1的资源。

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

  view plaincopy to clipboardprint?

  《?xml version=“1.0” encoding=“utf-8”?》

  《LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  android:orientation=“vertical” android:layout_width=“fill_parent”

  android:layout_height=“fill_parent”》

  《LinearLayout android:id=“@+id/LinearLayout01”

  android:layout_height=“wrap_content” android:layout_width=“fill_parent”》

  《ImageButton android:layout_width=“wrap_content”

  android:layout_height=“wrap_content” android:id=“@+id/ibtnTab1”

  android:background=“@drawable/png1298”》《/ImageButton》

  《ImageButton android:layout_width=“wrap_content”

  android:layout_height=“wrap_content” android:id=“@+id/ibtnTab2”

  android:background=“@drawable/png1292”》《/ImageButton》

  《/LinearLayout》

  《LinearLayout android:id=“@+id/LinearLayout02”

  android:layout_width=“fill_parent” android:layout_height=“fill_parent”》《/LinearLayout》

  《/LinearLayout》

  《?xml version=“1.0” encoding=“utf-8”?》

  《LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  android:orientation=“vertical” android:layout_width=“fill_parent”

  android:layout_height=“fill_parent”》

  《LinearLayout android:id=“@+id/LinearLayout01”

  android:layout_height=“wrap_content” android:layout_width=“fill_parent”》

  《ImageButton android:layout_width=“wrap_content”

  android:layout_height=“wrap_content” android:id=“@+id/ibtnTab1”

  android:background=“@drawable/png1298”》《/ImageButton》

  《ImageButton android:layout_width=“wrap_content”

  android:layout_height=“wrap_content” android:id=“@+id/ibtnTab2”

  android:background=“@drawable/png1292”》《/ImageButton》

  《/LinearLayout》

  《LinearLayout android:id=“@+id/LinearLayout02”

  android:layout_width=“fill_parent” android:layout_height=“fill_parent”》《/LinearLayout》

  《/LinearLayout》

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

  view plaincopy to clipboardprint?

  《?xml version=“1.0” encoding=“utf-8”?》

  《LinearLayout android:id=“@+id/LinearLayout01”

  xmlns:android=“http://schemas.android.com/apk/res/android”

  android:layout_width=“fill_parent” android:layout_height=“fill_parent”》

  《ListView android:id=“@+id/MyListView” android:layout_width=“fill_parent”

  android:layout_height=“fill_parent”》

  《/ListView》

  《/LinearLayout》

  《?xml version=“1.0” encoding=“utf-8”?》

  《LinearLayout android:id=“@+id/LinearLayout01”

  xmlns:android=“http://schemas.android.com/apk/res/android”

  android:layout_width=“fill_parent” android:layout_height=“fill_parent”》

  《ListView android:id=“@+id/MyListView” android:layout_width=“fill_parent”

  android:layout_height=“fill_parent”》

  《/ListView》

  《/LinearLayout》

 

  testActivityGroup.java源码如下:

  view plaincopy to clipboardprint?

  package com.testActivityGroup;

  import android.app.ActivityGroup;

  import android.content.Intent;

  import android.os.Bundle;

  import android.view.View;

  import android.view.Window;

  import android.widget.ImageButton;

  import android.widget.LinearLayout;

  import android.widget.ListView;

  public class testActivityGroup extends ActivityGroup {

  /** Called when the activity is first created. */

  LinearLayout container;//装载sub Activity的容器

  ImageButton ibtnTab1,ibtnTab2;

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  container = (LinearLayout) findViewById(R.id.LinearLayout02);

  ibtnTab1=(ImageButton)this.findViewById(R.id.ibtnTab1);

  ibtnTab1.setOnClickListener(new ClickEvent());

  ibtnTab2=(ImageButton)this.findViewById(R.id.ibtnTab2);

  ibtnTab2.setOnClickListener(new ClickEvent());

  }

  class ClickEvent implements View.OnClickListener{

  @Override

  public void onClick(View v) {

  container.removeAllViews();

  Intent intent=new Intent(testActivityGroup.this, subActivity.class);

  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

  String[] str=new String[12];

  if(v==ibtnTab1)

  {

  for(int i=0;i《str.length;i++)

  str[i]=“单选”+String.valueOf(i);

  intent.putExtra(“Name”, “subActivity1”);

  intent.putExtra(“Strings”, str);

  intent.putExtra(“ChoiceMode”, ListView.CHOICE_MODE_SINGLE);//通过参数设置列表式样

  }

  else if(v==ibtnTab2)

  {

  for(int i=0;i《str.length;i++)

  str[i]=“复选”+String.valueOf(i);

  intent.putExtra(“Name”, “subActivity2”);

  intent.putExtra(“Strings”, str);

  intent.putExtra(“ChoiceMode”, ListView.CHOICE_MODE_MULTIPLE);//通过参数设置列表式样

  }

  Window subActivity=getLocalActivityManager().startActivity(“subActivity”,intent);

  container.addView(subActivity.getDecorView());

  }

  }

  }

  package com.testActivityGroup;

  import android.app.ActivityGroup;

  import android.content.Intent;

  import android.os.Bundle;

  import android.view.View;

  import android.view.Window;

  import android.widget.ImageButton;

  import android.widget.LinearLayout;

  import android.widget.ListView;

  public class testActivityGroup extends ActivityGroup {

  /** Called when the activity is first created. */

  LinearLayout container;//装载sub Activity的容器

  ImageButton ibtnTab1,ibtnTab2;

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  container = (LinearLayout) findViewById(R.id.LinearLayout02);

  ibtnTab1=(ImageButton)this.findViewById(R.id.ibtnTab1);

  ibtnTab1.setOnClickListener(new ClickEvent());

  ibtnTab2=(ImageButton)this.findViewById(R.id.ibtnTab2);

  ibtnTab2.setOnClickListener(new ClickEvent());

  }

  class ClickEvent implements View.OnClickListener{

  @Override

  public void onClick(View v) {

  container.removeAllViews();

  Intent intent=new Intent(testActivityGroup.this, subActivity.class);

  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

  String[] str=new String[12];

  if(v==ibtnTab1)

  {

  for(int i=0;i《str.length;i++)

  str[i]=“单选”+String.valueOf(i);

  intent.putExtra(“Name”, “subActivity1”);

  intent.putExtra(“Strings”, str);

  intent.putExtra(“ChoiceMode”, ListView.CHOICE_MODE_SINGLE);//通过参数设置列表式样

  }

  else if(v==ibtnTab2)

  {

  for(int i=0;i《str.length;i++)

  str[i]=“复选”+String.valueOf(i);

  intent.putExtra(“Name”, “subActivity2”);

  intent.putExtra(“Strings”, str);

  intent.putExtra(“ChoiceMode”, ListView.CHOICE_MODE_MULTIPLE);//通过参数设置列表式样

  }

  Window subActivity=getLocalActivityManager().startActivity(“subActivity”,intent);

  container.addView(subActivity.getDecorView());

  }

  }

  }

 

  subActivity.java源码如下:

  view plaincopy to clipboardprint?

  package com.testActivityGroup;

  import android.app.Activity;

  import android.os.Bundle;

  import android.util.Log;

  import android.widget.ArrayAdapter;

  import android.widget.ListView;

  public class subActivity extends Activity {

  String name;

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.listview);

  // 读取列表内容

  name = this.getIntent().getStringExtra(“Name”);

  String[] str = this.getIntent().getStringArrayExtra(“Strings”);

  int choiceMode = this.getIntent().getIntExtra(“ChoiceMode”,

  ListView.CHOICE_MODE_NONE);

  ListView listView = (ListView) findViewById(R.id.MyListView);

  // 设置列表的式样

  int itemID = android.R.layout.simple_list_item_1;

  if (choiceMode == ListView.CHOICE_MODE_MULTIPLE)// 主Activity要求多选

  itemID = android.R.layout.simple_list_item_multiple_choice;

  else if (choiceMode == ListView.CHOICE_MODE_SINGLE)// 主Activity要求单选

  itemID = android.R.layout.simple_list_item_single_choice;

  ArrayAdapter《String》 arrayAdapter = new ArrayAdapter《String》(this,

  itemID, str);

  listView.setAdapter(arrayAdapter);

  listView.setChoiceMode(choiceMode);

  Log.e(name, “onCreate”);// 显示当前状态,onCreate与onDestroy对应

  }

  @Override

  public void onDestroy() {

  super.onDestroy();

  Log.e(name, “onDestroy”);// 显示当前状态,onCreate与onDestroy对应

  }

  @Override

  public void onStart() {

  super.onStart();

  Log.e(name, “onStart”);// 显示当前状态,onStart与onStop对应

  }

  @Override

  public void onStop() {

  super.onStop();

  Log.e(name, “onStop”);// 显示当前状态,onStart与onStop对应

  }

  @Override

  public void onRestart() {

  super.onRestart();

  Log.e(name, “onRestart”);

  }

  @Override

  public void onResume() {

  super.onResume();

  Log.e(name, “onResume”);// 显示当前状态,onPause与onResume对应

  }

  @Override

  public void onPause() {

  super.onResume();

  Log.e(name, “onPause”);// 显示当前状态,onPause与onResume对应

  }

  }

  

公司简介

宜科(天津)电子有限公司是中国工业自动化的领军企业,于2003年在天津投资成立,销售和服务网络覆盖全国。作为中国本土工业自动化产品的提供商和智能制造解决方案的供应商,宜科在汽车、汽车零部件、工程机械、机器人、食品制药、印刷包装、纺织机械、物流设备、电子制造等诸多领域占据领先地位。宜科为智慧工厂的整体规划实施提供自系统层、控制层、网络层到执行层自上而下的全系列服务,产品及解决方案涵盖但不局限于云平台、MES制造执行系统、工业现场总线、工业以太网、工业无线通讯、机器人及智能设备组成的自动化生产线、自动化电气控制系统集成、智能物流仓储系统等,以实现真正智能化的生产制造,从而带来生产力和生产效率的大幅提升,以及对生产灵活性和生产复杂性的管理能力的大幅提升。多年来,宜科以创新的技术、卓越的解决方案和产品坚持不懈地为中国制造业的发展提供全面支持,并以出众的品质和令人信赖的可靠性、领先的技术成就、不懈的创新追求,在业界独树一帜。帮助中国制造业转型升级,加速智能制造进程,成为中国工业4.0智慧工厂解决方案当之无愧的践行者。

更多详情>>

联系我们

  • 联系人:章清涛
  • 热线:18611695135
  • 电话:
  • 传真:
  • 邮箱:18210150532@139.com

Copyright © 2015 ilinki.net Inc. All rights reserved. 智汇工业版权所有

电话:010-62314658 邮箱:service@ilinki.net

主办单位:智汇万联(北京)信息技术有限公司

京ICP备15030148号-1