[Android]使用ActivityGroup来切换Activity和Layout
前言
在一个主界面中做Activity切换一般都会用TabActivity,使用方便,Activity互相之间相对独立,但是可定制性不强,而且修改起来很麻烦。当然也可以把layout分开,把逻辑代码全写在主界面的逻辑代码中,但是很明显可维护性相当差,这里通过ActivityGroup来解决这个问题。
声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com
农民伯伯: http://www.cnblogs.com/over140/
文章
1. Android: TabActivity Nested Activities
2. Android ActivityGroup的使用代码将子activty 的layout加入到主activity中
正文
一、效果图
要求点击底部不同图片按钮切换不同的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进行设置。
- 大小: 13.2 KB
分享到:
相关推荐
在Android开发中,ActivityGroup是早些版本API中提供的一种特殊类型的Activity,它允许开发者在一个TabHost或者帧布局(FrameLayout)中嵌套多个Activity,从而实现类似iOS中UINavigationController的堆叠管理器效果...
在Android开发中,`ActivityGroup`是一个特殊类型的`Activity`,它允许我们在一个父`Activity`中嵌套多个子`Activity`。这个概念通常用于实现类似TabHost或者多级导航的效果,使得用户可以在一个单一的栈结构中进行...
然而,有时开发者可能需要在同一个栈中管理多个Activity,这时`ActivityGroup`就派上了用场。`ActivityGroup`是早期Android版本(Android 2.x)提供的一种特殊类型的`ViewGroup`,允许在同一个`TabHost`或`...
在这种情况下,通常我们会选择使用TabHost或者Fragment等组件来实现,但如果你正在使用的是Android早期版本(API Level ),`ActivityGroup`是一个可行的选择。`ActivityGroup`是`TabActivity`的一种替代方案,它...
在Android开发中,ActivityGroup是一种特殊类型的Activity,它允许开发者在一个Activity内嵌套其他Activity,实现类似TabHost或Fragment的效果,但这是在Android早期版本(API级别较低)中的一种实现方式。...
ActivityGroup的用法,头部和底部为固定布局中间动态显示界面 并在中间布局实现手势滑动效果,自定义SlidingDrawer(抽屉)效果,在ActivityGroup里执行跳转等功能。至于在Android在ActivityGroup里执行跳转详细介绍 ...
在Android开发中,ActivityGroup是一种特殊的Activity容器,它允许在一个Activity内部嵌套多个子Activity,形成类似多级菜单或者Tab效果。本示例"android ActivityGroup的demo"将深入探讨如何使用ActivityGroup来...
在Android开发中,创建一个具有分页功能的Tab布局是常见的需求,这通常涉及到GridView和ActivityGroup的结合使用。下面将详细解释这两个组件以及如何利用它们实现Tab分页。 首先,`GridView`是Android的一种视图...
在Android开发中,ActivityGroup和GridView是两种常用的组件,它们可以协同工作来实现标签分页的效果,这是一种常见的用户界面设计模式,通常用于展示多个类似内容的页面,让用户通过标签进行切换浏览。本篇将深入...
在Android开发中,创建带有分页功能的界面是常见的需求,而使用`GridView`和`ActivityGroup`实现分页是一种不常用但仍然有效的方法。在本文中,我们将深入探讨如何结合这两种组件来创建一个TAB分页的效果。 首先,`...
为了解决这些问题,开发者引入了ActivityGroup,它允许在一个TabHost内嵌套多个Activity,使得在同一层级的Activity间切换更为便捷。 ActivityGroup是Android提供的一个特殊类型的Activity,它允许我们在一个...
在Android开发中,TabHost和ActivityGroup是两个关键组件,它们常常被用来构建具有标签页切换功能的应用界面。本文将详细讲解如何将这两个组件结合使用,以实现多Activity间的高效跳转和堆栈管理。 首先,TabHost是...
本教程通过一个名为"FragmentDemo"的实战项目,向我们展示了如何有效地使用Fragment替代旧式的ActivityGroup,以构建更加灵活和动态的应用程序界面。 Fragment的主要功能包括: 1. **模块化设计**:Fragment允许...
在Android开发中,TabHost和ActivityGroup是两个重要的组件,它们用于实现复杂的界面布局和交互。TabHost主要用于创建带有标签页的应用界面,而ActivityGroup则允许你在同一个父Activity下管理多个子Activity,使得...
ActivityGroup是早期Android SDK中的一个特殊类型,它允许在一个Activity中嵌套多个子Activity,形成类似TabHost或者多窗口的效果。然而,从Android 3.0(API级别11)开始,ActivityGroup被废弃,推荐使用Fragment来...
ActivityGroup是一种旧版的Android实现,它允许在一个Activity中嵌套多个子Activity,这在早期版本的Android系统中常用于实现类似TabHost的效果。然而,自Android 3.0(API级别11)起,Android引入了Fragment的概念...
在安卓应用开发中,TabHost和ActivityGroup是两种常见的组件,用于实现多页面的导航和管理。本资源“安卓Android源码——TabHost内嵌ActivityGroup界面管理源码.zip”提供了一个实例,帮助开发者理解如何在TabHost中...
在Android开发中,TabHost和ActivityGroup是两个关键组件,常用于实现多页面的导航和界面管理。在本文中,我们将深入探讨如何使用TabHost内嵌ActivityGroup来创建复杂的用户界面,并通过源码分析理解其工作原理。 ...
为ActivityGroup能往界面上不停的添加界面,这样就能实现界面的叠加效果,但是你叠加的时候就会发现,叠加上去的界面不会显示下面的选项卡, 而且你的返回键,也不好使。这个源码就是用到TabActivity内嵌ActivityGroup...
本文将深入探讨如何通过ActivityGroup和ViewPager的组合来实现这一目标,同时关注下拉刷新功能的集成,这是现代移动应用中不可或缺的一部分。 首先,让我们了解一下ActivityGroup。在早期的Android SDK版本中,...