实现MapFragment(二)
来源:互联网 发布:有mac版本的网游 编辑:程序博客网 时间:2024/05/20 11:50
本文内容为原创,转载者请注明原始作者以及原始出处,以避免版权纠纷!
在没有出现Fragment之前,为了避免Activity频繁的切换而带来的用户体验低下的问题,肯定有不少人用过ActivityGroup或者TabActivity。实际上ActivityGroup及其子类最大的用处就是能将多个Activity显示在同一个屏幕上,而没有Activity之间的切换(准确的说是:没有了Activity全屏效果和切换效果)。这个功能在Fragment出现之后,被Google建议成“deprecated”了。在迫不得已或者一些诡异的需求面前(比如说在Fragment中显示MapView),我们不妨重新启用这中功能。
事实上,ActivityGroup继承自Activity,它的本质封装着一个LocalActivityManager的实例。LocalActivityManager是用来启动、管理、关闭Activity的。它可以在启动完一个Activity之后,拿到这个Activity的根View,添加到ActivityGroup的ContentView中,这样就实现了一个Activity置于另一个Activity(ActivityGroup)之中的效果。
而Fragment的实现原理跟上面几乎如出一辙。FragmentActivity的本质就是它封装着一个FragmentManager,只不过它是用来启动、管理、关闭Fragment的。它可以在启动完一个Fragment之后,拿到这个Fragment的根View,添加到FragmentActivity的ContentView中,这样实现了一个Fragment置于一个Activity(FragmentActivity)之中的效果。
我们再重复一遍我们所面临的问题:
有这样一种需求:在开发一款Map应用时,首先为了兼容更多的机型,要求在Android SDK2.1上开发;其次为了得到更好的用户体验,想要将MapView置于Fragment以得到更友好的UI切换效果。
解决这个问题的关键点就是:我们要使用Fragmen即必须继承FragmentActivity;要使用MapView就必须继承MapActivity。由于Java语言跟C++语言不同,它是单继承的,不可能同时继承FragmentActivity和MapActivity的。
在理解了上述的原理之后,我们可以提出一种全新的方案:我们让主Activity继承自FragmentActivity,它封装着FragmentManager可以用来启动Fragment的。在Fragment中,我们来封装一个LocalActivityManager,用来启动一个Activity(当然是MapActivity啦)。这样一来,MapView就间接的处在了Fragment之中了。
当明白了原理,解决问题就是这么简单的。
事实上这个方案是一个叫inazaruk的大牛人(在此膜拜一下)实现过的。我只是拿过他代码稍作修改一番,全做学习使用。由于是二次创作,特免费供大家下载,指点!
下载地址如下:http://download.csdn.net/detail/seker_xinjian/4058720
- 实现MapFragment(二)
- 实现MapFragment(一)
- 实现MapFragment
- 【Tech-Android-View】Android中引入MapFragment SupporMapFragment GoogleMap(2)
- BaiduMap---百度地图官方Demo之MapFragment使用(创建一个基于Fragment的地图框架)
- google地图 MapFragment
- Android Map 新用法:MapFragment
- 算法实现(二)
- KMP实现(二)
- vlsm实现(二)
- 人事管理系统实现(二)
- retrofit实现(二)
- 二、tftp实现与说明(二)
- 【Tech-Android-View】Android中引入MapFragment SupporMapFragment GoogleMap
- 如何实现 JavaScript(二)
- 驱动安装实现(二)
- (二)CvMemStorageAlloc实现过程
- C#实现数据结构(二)
- ocp听课总结之1——课程简介
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- 实现MapFragment(一)
- 铁道部网络购票网站存在的一个大问题----一个大大的事务!!!
- linux python守护进程编写
- 实现MapFragment(二)
- 并查集
- 【DuiLib入门基础】九宫格corner属性详细解释
- Qt 中打开玻璃化DWM效果
- 开发人员本身是90分的测试人员
- 寒假总结
- 安装Grub到U盘
- 小技术团队的成长
- Python 之 tuple