[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进行设置。
[Android]使用ActivityGroup来切换Activity和Layout相关推荐
- Android 使用ActivityGroup来切换Activity和Layout
Android 使用ActivityGroup来切换Activity和Layout 减小字体 增大字体 前言 在一个主界面中做Activity切换一般都会用TabActivity,使用方便,Activ ...
- android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...
Android实现简单底部导航栏 Android仿微信滑动切换效果 发布时间:2020-10-09 19:48:00 来源:脚本之家 阅读:96 作者:丶白泽 Android仿微信滑动切换最终实现效果 ...
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
2011.10.28注:如果需要控件停在动画后的位置,需要设置android:fillAfter属性为true,在set节点中.默认在动画结束后回到动画前位置.设置android:fillAfter后 ...
- android activity滑动切换,Android 向右滑动切换Activity, 随着手势的滑动而滑动的效果...
[实例简介] Android 向右滑动切换Activity, 随着手势的滑动而滑动的效果,项目详情http://blog.csdn.net/xiaanming/article/details/2093 ...
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析(上)...
在前面一篇文章中,我们分析了Android应用程序窗口的绘图表面的创建过程.Android应用程序窗口的绘图表面在创建完成之后,我们就可以从上到下地绘制它里面的各个视图了,即各个UI元素了.不过在绘制 ...
- [android] 练习样式主题自定义activity切换动画
主要练习了自定义样式和主题,继承android系统默认的样式并修改,练习xml定义淡入淡出动画 anim/fade_in.xml <?xml version="1.0" en ...
- android 屏幕横竖屏切换时生命周期运行详解,创建横屏layout,has no declaration in the base
横屏代码 1.配置文件设置 android:screenOrientation="landscape" 2.java代码设置 setRequestedOrientation(Act ...
- android中的横竖屏切换,Android中横竖屏切换时Activity的生命周期
Android中横竖屏切换时Activity的生命周期执行情况 1.默认情况下生命周期 (1)第一次进入界面 11-17 13:55:18.452: E/ImageListActivity(10586 ...
- Android 5.1系统手机Activity切换透明可以看到桌面
Android 5.1系统手机Activity切换透明可以看到桌面 需要解决的问题 我们在开发时,在部分手机中进行Activity跳转,我们会先看到该手机的桌面然后才会看到我们需要跳转的Activit ...
- php仿微信底部菜单,Android实现简单底部导航栏 Android仿微信滑动切换效果
Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...
最新文章
- Halcon 读写txt文件,以逗号或空格分割
- BZOJ1857 Scoi2010 传送带 【三分】
- 牛客一 G-Game of Swapping Numbers
- 使用Kubeadm创建k8s集群之节点部署(三十二)
- python读写json和txt
- LeetCode 1536. 排布二进制网格的最少交换次数
- c语言汇编混合编程写一个乘法,求通过C语言实现矩阵的加、减及乘法。要自己写的,不要复制过来...
- Java|C++工作笔记-控制台带参数运行程序
- 科学院开放资源github_什么是开放科学?
- svn checkout 提示“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。”解决方法...
- 【转】每天一个linux命令(61):wget命令
- Android 中文 API (28) —— CheckedTextView
- 龙蜥操作系统(Anolis OS)正式登陆阿里云公共云
- hibernate二级缓存(二)二级缓存实现原理简单剖析
- 如何将工作流程“简单化”,从而提高工作效率?
- 详解Web安全攻防战(DoS攻击、CSRF、XSS、SQL注入)
- 渗透测试学习 二、Windows基础
- 计算机如何打开office,Win11怎么强制打开/开启Office新界面?-电脑自学网
- 深度学习-聊天机器人
- 利用adb设置安卓http代理
热门文章
- python语言程序设计实践教程答案上海交通大学_计算机二级教程 Python语言程序设计 第4章程序的控制结构...
- clousx6机器人怎么导入词库_clousx6词库编程从零入门:3
- VM15.5安装XP系统
- 最好用的 10 款 MySQL 管理工具横向测评 - 免费和付费到底怎么选?
- 浏览器自动打开html怎么办,浏览器自动弹出网页怎么处理?开机自动弹出垃圾网页如何解决?...
- 网页CSS常用中英文字体收集
- 涂抹Oracle—三思笔记之一步一步学Oracle
- jQuery Mobile手机开发视频教程全套 共80集
- html5视频播放解决方案
- 通过Python对商品销售数据预测