[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进行设置。


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582225,如需转载请自行联系原作者

相关文章
|
Android开发
Android面试题之Activity的启动模式和flag
Android Activity的四种启动模式:standard(默认,每次启动创建新实例),singleTop(栈顶复用,不走onCreate,调用onNewIntent),singleTask(栈内唯一,清除上方Activity)和singleInstance(单独栈内唯一)。启动模式在AndroidManifest.xml中配置,Intent Flags如FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP可实现类似功能。了解这些对于处理Activity栈管理至关重要。
147 0
|
11月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
202 6
|
11月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
138 3
|
11月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
134 3
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
356 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
12月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
205 4
|
11月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
109 0
|
XML Android开发 数据格式
Android 中如何设置activity的启动动画,让它像dialog一样从底部往上出来
在 Android 中实现 Activity 的对话框式过渡动画:从底部滑入与从顶部滑出。需定义两个 XML 动画文件 `activity_slide_in.xml` 和 `activity_slide_out.xml`,分别控制 Activity 的进入与退出动画。使用 `overridePendingTransition` 方法在启动 (`startActivity`) 或结束 (`finish`) Activity 时应用这些动画。为了使前 Activity 保持静止,可定义 `no_animation.xml` 并在启动新 Activity 时仅设置新 Activity 的进入动画。
487 12
|
开发工具 Android开发
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
489 1
|
12月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
229 0