本文实例讲述了Android编程实现两个Activity相互切换而不使用onCreate()的方法。分享给大家供大家参考,具体如下:

这里要实现的目的是:
有3个Activity: A,B,C,从A中可以进入B,B中可以进入C,并且B和C之间可能需要多次相互切换,因此不能使用普通的startActivity-finish方式,因为重新创建Activity比较耗时。当这个Activity内容比较多时,重复创建很大的影响了流畅性。(即实现类似于QQ上 选择照片页面-选择相册页面,这两个页面可能多次相互切换,所以不能多次创建)
1.从B进入C或者从C进入B时,均使用startActivity的方式(不使用finish),并为intent添加参数FLAG_ACTIVITY_REORDER_TO_FRONT,即:
Intent intent = new Intent(B.this, C.class); intent.addFlags(Intent.FLAG_ACTIVITY__TO_FRONT); startActivity(intent);
在这种情况下,如果C之前没有创建则会被创建,如果已经创建了,则只会把C从Aciticy栈中搬到B的上面来,而不再重新创建。
2.在C中重写onNewIntent方法,即:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
该方法中的参数intent即为从B到C时startActivity的intent,在第二次进入C时,可以在此方法中根据从B中传过来的数据更新C的页面。(第一次进入C时走onCreate,不会走onNewIntent)
3.在B中也重写onNewIntent,和上述2相同。
4.在A和B中使用某个按钮或返回键回到最开始的页面A时,同样使用startActivity的方式,并为intent添加参数FLAG_ACTIVITY_CLEAR_TOP,这样B和C都会被关闭(finish)
Intent intent = new Intent(this, A.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
5.同样,在A中重写onNewIntent方法,处理B或C返回时传递的信息。并且,在Manifest中为A添加属性
android:launchMode="singleTop"
6.最后一个问题,由于从B到C和从C到B都使用的是startActivity的方式,因此Activity之间切换的动画都是 开启新Activity 的样式。例如,无论从B到C或者从C到B,新页面都是从右侧进入,给人的感觉似乎一直在创建新Activity,很不友好。
解决这个问题的方法是自定义Activity之间切换的动画,目的是给用户一种感觉:从C到B的时候是新开Activity(B从右侧进入),而从B到C的时候是“返回”(C从左侧进入)。只需一行代码:
overridePendingTransition(in, out);
in:进入的Activity的动画; out:退出的Activity的动画。
这里需要注意:
(1)对于普通的startActivity-finish方式,如果需要自定义Activity之间切换的动画,只需将上述代码写在startActivity或finish之后即可:
(2)但是,本文中由于使用了FLAG_ACTIVITY_REORDER_TO_FRONT的方式,上述动画将只在第一次创建页面B或C的时候有效。解决方法是,将上述代码写在onNewIntent中。例如从B到C,则在C中onNewIntent中写上这行代码,指定C进入的样式和B退出的样式。
7.动画资源:
(1)Activity从左侧退出:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="150" android:fromXDelta="0" android:toXDelta="-100%p" android:fromYDelta="0" android:toYDelta="0" > </translate>
(2)Activity从右侧退出:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="150" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="100%p" android:toYDelta="0" > </translate>
(3)Activity从左侧进入:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="150" android:fromXDelta="-100%p" android:fromYDelta="0" android:toXDelta="0" android:toYDelta="0" > </translate>
(4)Activity从右侧进入:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="150" android:fromXDelta="100%p" android:toXDelta="0" android:fromYDelta="0" android:toYDelta="0" > </translate>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 两个
# Activity
# 切换
# 不使用
# onCreate()
# Android onCreateOptionsMenu的使用方法总结
# Android OnCreate()中获取控件高度与宽度两种方法详解
# Android使用onCreateOptionsMenu()创建菜单Menu的方法详解
# Android onCreate( )方法详细介绍
# Android 解决嵌套Fragment无法接收onCreateOptionsMenu事件的问题
# Android在OnCreate中获取控件的宽度和高度的实现代码
# Android中oncreate中获得控件高度或宽度的实现方法
# 重写
# 只需
# 而不
# 自定义
# 并为
# 写在
# 解决方法
# 的是
# 都是
# 进阶
# 相关内容
# 在此
# 目的是
# 是从
# 感兴趣
# 这两个
# 给人
# 给大家
# 新开
# 只在
相关文章:
如何快速生成可下载的建站源码工具?
网站设计制作企业有哪些,抖音官网主页怎么设置?
建站之星Pro快速搭建教程:模板选择与功能配置指南
已有域名建站全流程解析:网站搭建步骤与建站工具选择
网站制作公司排行榜,抖音怎样做个人官方网站
大学网站设计制作软件有哪些,如何将网站制作成自己app?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
清除minerd进程的简单方法
北京企业网站设计制作公司,北京铁路集团官方网站?
C++时间戳转换成日期时间的步骤和示例代码
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
建站主机选购指南与交易推荐:核心配置解析
江苏网站制作公司有哪些,江苏书法考级官方网站?
建站之星如何实现PC+手机+微信网站五合一建站?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
建站之星2.7模板快速切换与批量管理功能操作指南
如何在云指建站中生成FTP站点?
如何快速建站并高效导出源代码?
如何在宝塔面板中创建新站点?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何续费美橙建站之星域名及服务?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
打鱼网站制作软件,波克捕鱼官方号怎么注册?
如何快速搭建高效服务器建站系统?
孙琪峥织梦建站教程如何优化数据库安全?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
,石家庄四十八中学官网?
高防服务器:AI智能防御DDoS攻击与数据安全保障
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
开封网站制作公司,网络用语开封是什么意思?
电商网站制作公司有哪些,1688网是什么意思?
如何选择可靠的免备案建站服务器?
家庭服务器如何搭建个人网站?
建站之星在线版空间:自助建站+智能模板一键生成方案
建站168自助建站系统:快速模板定制与SEO优化指南
如何在Tomcat中配置并部署网站项目?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何快速查询域名建站关键信息?
如何基于云服务器快速搭建个人网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何在万网主机上快速搭建网站?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。