Welcome 微信登录

首页 / 操作系统 / Linux / Android开发:button在底部的多个view切换<实例一正常切换>

代码精简,结构清晰,使用了include标签,希望对大家有帮助。相关阅读:Android开发:button在底部的多个view切换<实例二3D切换> 见 http://www.linuxidc.com/Linux/2011-09/43554.htm

1. 镶嵌View的主ActivityGroup

  1. package com.isomobile.widgets;  
  2.   
  3. import android.app.ActivityGroup;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8. import android.widget.RelativeLayout;  
  9.   
  10. public class MainActivity extends ActivityGroup implements View.OnClickListener {  
  11.     private final static Class<?>[] sActivityClasses = {  
  12.             Activity1.class, Activity2.class, Activity3.class, Activity4.class, Activity5.class  
  13.     };  
  14.   
  15.     private final static int[] sResIds = {  
  16.             R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, R.id.btn5  
  17.     };  
  18.   
  19.     private final static String[] sActivityIds = {  
  20.             "Activity1""Activity2""Activity3""Activity4""Activity5"  
  21.     };  
  22.   
  23.     private RelativeLayout mViewContainer;  
  24.   
  25.     private Button[] mBtns = new Button[sResIds.length];  
  26.       
  27.     private int mCurId = 0;  
  28.   
  29.     /** Called when the activity is first created. */  
  30.     @Override  
  31.     public void onCreate(Bundle savedInstanceState) {  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.main);  
  34.         setupViews();  
  35.     }  
  36.   
  37.     private void setupViews() {  
  38.         mViewContainer = (RelativeLayout) findViewById(R.id.container);  
  39.         final Button[] btns = mBtns;  
  40.         forint i=0; i< btns.length; i++) {  
  41.             btns[i] = (Button) findViewById(sResIds[i]);  
  42.             btns[i].setOnClickListener(this);  
  43.         }  
  44.     }  
  45.   
  46.     @Override  
  47.     public void onClick(View v) {  
  48.         final int id = v.getId();  
  49.         if(mCurId == id) {  
  50.             return ;  
  51.         }  
  52.         mCurId = id;  
  53.         processViews(id);  
  54.     }  
  55.   
  56.     private void processViews(int rid) {  
  57.         mViewContainer.removeAllViews();  
  58.         final int index = getButtonIndex(rid);  
  59.         final View tempView = getLocalActivityManager().startActivity(sActivityIds[index],  
  60.                 new Intent(this, sActivityClasses[index]).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))  
  61.                 .getDecorView();  
  62.         mViewContainer.addView(tempView);  
  63.     }  
  64.   
  65.     private int getButtonIndex(int rid) {  
  66.         final int length = sResIds.length;  
  67.         for (int i = 0; i < length; i++) {  
  68.             if (rid == sResIds[i]) {  
  69.                 return i;  
  70.             }  
  71.         }  
  72.         return 0;  
  73.     }  
  74. }  

2. 其它子Activity(Activity1~5代码基本雷同这里只给出一个):

  1. package com.isomobile.widgets;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.   
  6. public class Activity1 extends Activity {  
  7.   
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.activity1_layout);  
  12.     }  
  13. }  

3.  Main.xml:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent">  
  7.     <RelativeLayout  
  8.         android:id="@+id/container"  
  9.         android:layout_height="fill_parent"  
  10.         android:layout_width="fill_parent">  
  11.     </RelativeLayout>  
  12.     <include  
  13.         layout="@layout/bottom_buttons" />  
  14. </RelativeLayout>  
4. bottom_buttons.xml:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <LinearLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="wrap_content"  
  6.     android:layout_alignParentBottom="true"  
  7.     android:weightSum="5.0"  
  8.     android:orientation="horizontal">  
  9.     <Button  
  10.         android:id="@+id/btn1"  
  11.         android:layout_gravity="bottom"  
  12.         android:gravity="bottom"  
  13.         android:layout_width="0dip"  
  14.         android:layout_height="fill_parent"  
  15.         android:layout_weight="1.0" />  
  16.     <Button  
  17.         android:id="@+id/btn2"  
  18.         android:layout_gravity="bottom"  
  19.         android:gravity="bottom"  
  20.         android:layout_width="0dip"  
  21.         android:layout_height="fill_parent"  
  22.         android:layout_weight="1.0" />  
  23.     <Button  
  24.         android:id="@+id/btn3"  
  25.         android:layout_gravity="bottom"  
  26.         android:gravity="bottom"  
  27.         android:layout_width="0dip"  
  28.         android:layout_height="fill_parent"  
  29.         android:layout_weight="1.0" />  
  30.     <Button  
  31.         android:id="@+id/btn4"  
  32.         android:layout_gravity="bottom"  
  33.         android:gravity="bottom"  
  34.         android:layout_width="0dip"  
  35.         android:layout_weight="1.0"  
  36.         android:layout_height="fill_parent" />  
  37.     <Button  
  38.         android:id="@+id/btn5"  
  39.         android:layout_gravity="bottom"  
  40.         android:gravity="bottom"  
  41.         android:layout_width="0dip"  
  42.         android:layout_height="fill_parent"  
  43.         android:layout_weight="1.0" />  
  44. </LinearLayout>  
效果图片如下:

" src="http://www.linuxidc.com/upload/2011_09/11092220359904.jpg" align=center>
整个工程源代码下载地址见: 免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /pub/Android源码集锦/2011年/9月/Android开发:button在底部的多个view切换 实例一正常切换/