[Android]使用ActivityGroup来切换Activity和Layout

简介:

一、效果图

     

    要求点击底部不同图片按钮切换不同的Activity,并在中间显示Activity对应的ContentView。

二、 实现代码

    2.1  layout.xml

<? xml version="1.0" encoding="utf-8" ?>
< LinearLayout  xmlns:android ="http://schemas.android.com/apk/res/android"
    android:layout_width
="fill_parent"  android:orientation ="vertical"
    android:layout_height
="fill_parent" >
    
< LinearLayout  android:gravity ="center_horizontal"
        android:background
="@drawable/myinfor2"  android:layout_width ="fill_parent"
        android:layout_height
="wrap_content" >
        
< TextView  android:id ="@+id/cust_title"  android:textColor ="@android:color/white"
            android:textSize
="28sp"  android:text ="模块1"  android:layout_width ="wrap_content"
            android:layout_height
="wrap_content" ></ TextView >
    
</ LinearLayout >
    
<!--  中间动态加载View  -->
    
< ScrollView  android:measureAllChildren ="true"  android:id ="@+id/containerBody"
        android:layout_weight
="1"  android:layout_height ="fill_parent"
        android:layout_width
="fill_parent" >
    
</ ScrollView >
    
< LinearLayout  android:background ="@android:color/black"
        android:layout_gravity
="bottom"  android:orientation ="horizontal"
        android:layout_width
="fill_parent"  android:layout_height ="wrap_content" >
        
<!--  功能模块按钮1  -->
        
< ImageView  android:id ="@+id/btnModule1"  android:src ="@android:drawable/ic_dialog_dialer"
            android:layout_marginLeft
="7dp"  android:layout_marginTop ="3dp"
            android:layout_marginBottom
="3dp"  android:layout_width ="wrap_content"
            android:layout_height
="wrap_content"   />
        
<!--  功能模块按钮2  -->
        
< ImageView  android:id ="@+id/btnModule2"  android:src ="@android:drawable/ic_dialog_info"
            android:layout_marginLeft
="7dp"  android:layout_marginTop ="3dp"
            android:layout_marginBottom
="3dp"  android:layout_width ="wrap_content"
            android:layout_height
="wrap_content"   />
        
<!--  功能模块按钮3  -->
        
< ImageView  android:id ="@+id/btnModule3"  android:src ="@android:drawable/ic_dialog_alert"
            android:layout_marginLeft
="7dp"  android:layout_marginTop ="3dp"
            android:layout_marginBottom
="3dp"  android:layout_width ="wrap_content"
            android:layout_height
="wrap_content"   />
    
</ LinearLayout >
</ LinearLayout >

    2.2  TestView.java

/**
 * 使用ActivityGroup来切换Activity和Layout
 * 
@author  农民伯伯
 * 
@version  2010-9-7
 * 
 
*/
public   class  TestView  extends  ActivityGroup {

    
private  ScrollView container  =   null ;

    @Override
    
protected   void  onCreate(Bundle savedInstanceState) {
        
super .onCreate(savedInstanceState);
        
//  隐藏标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        
//  设置视图
        setContentView(R.layout.layout);

        container 
=  (ScrollView) findViewById(R.id.containerBody);

        
//  模块1
        ImageView btnModule1  =  (ImageView) findViewById(R.id.btnModule1);
        btnModule1.setOnClickListener(
new  OnClickListener() {
            @Override
            
public   void  onClick(View v) {
                container.removeAllViews();
                container.addView(getLocalActivityManager().startActivity(
                        
" Module1 " ,
                        
new  Intent(TestView. this , ModuleView1. class )
                                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                        .getDecorView());
            }
        });

        
//  模块2
        ImageView btnModule2  =  (ImageView) findViewById(R.id.btnModule2);
        btnModule2.setOnClickListener(
new  OnClickListener() {
            @Override
            
public   void  onClick(View v) {
                container.removeAllViews();
                container.addView(getLocalActivityManager().startActivity(
                        
" Module2 " ,
                        
new  Intent(TestView. this , ModuleView2. class )
                                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                        .getDecorView());
            }
        });

        
//  模块3
        ImageView btnModule3  =  (ImageView) findViewById(R.id.btnModule3);
        btnModule3.setOnClickListener(
new  OnClickListener() {
            @Override
            
public   void  onClick(View v) {
                container.removeAllViews();
                container.addView(getLocalActivityManager().startActivity(
                        
" Module3 " ,
                        
new  Intent(TestView. this , ModuleView3. class )
                                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
                        .getDecorView());
            }
        });
    }
}

    代码说明:

      a).  ModuleView1、ModuleView2 ModuleView3分别继承自Activity。

      b).  想动态改变标题可以通过cust_title获取TextView进行设置。

本文转自博客园农民伯伯的博客,原文链接:[Android]使用ActivityGroup来切换Activity和Layout,如需转载请自行联系原博主。

目录
相关文章
|
1月前
|
XML Java Android开发
利用Bundle实现Android Activity间消息的传递
利用Bundle实现Android Activity间消息的传递
25 2
|
20小时前
|
Android开发 开发者
Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题
【6月更文挑战第25天】Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题,首先在`styles.xml`中定义新主题,如`MyAppTheme`,然后在`AndroidManifest.xml`中设置`android:theme`。可应用于全局或特定Activity。运行时切换主题需重置Activity,如通过`setTheme()`和`recreate()`方法。这允许开发者定制界面以匹配品牌或用户偏好。
7 2
|
11天前
|
Android开发
Android面试题之activity启动流程
该文探讨了Android应用启动和Activity管理服务(AMS)的工作原理。从Launcher启动应用开始,涉及Binder机制、AMS回调、进程创建、Application和Activity的生命周期。文中详细阐述了AMS处理流程,包括创建ClassLoader、加载APK、启动Activity的步骤,以及权限校验和启动模式判断。此外,还补充了activity启动流程中AMS的部分细节。欲了解更多内容,可关注公众号“AntDream”。
13 1
|
18天前
|
存储 Java Android开发
Android上在两个Activity之间传递Bitmap对象
Android上在两个Activity之间传递Bitmap对象
15 2
|
22天前
|
Java Android开发 C++
42. 【Android教程】活动:Activity
42. 【Android教程】活动:Activity
19 2
|
1月前
|
Android开发 数据库管理
Android如何在Activity和Service之间传递数据
Android如何在Activity和Service之间传递数据
27 3
|
1月前
|
Android开发 容器
Android Layout 布局
Android Layout 布局
25 1
|
1月前
|
Shell Android开发
Android Activity重写dump方法实现通过adb调试代码
Android Activity重写dump方法实现通过adb调试代码
24 0