多个Activity通用一个View对象

转载自:http://blog.csdn.net/u014303273

有时候为了每个activity中都有相同的内容显示(即该模块是单列的),并且时时刻刻界面显示一致,通常方法有:

1.在baseActivity中进行添加公共view布局进行显示,这样做功能通常能够实现,但是每个activity中的view不是同一个对象,并且该view变化,其他activity也不会变,如果该控件view比 较复杂,功能事件多,维护修改都是比较麻烦,耦合性高
该方法只是适合简单的相同view,如何网络的变化提示控件,可以在baseactivity中实现,简单功能,简单方法实现

2.在第一个Activity启动的时候,使用Activity对应的Context来创建一个VIew,然后用这个VIew来初始化Application的成员VIew,这样不就通过这种方式将这个View设置成全局变量但是不要忘记,一个VIew只能对应一个parent,在你add之前,注意有没有remove,该方式虽然view显示数据能够保持一致,占用较少的内存,功能耦合低,但是该控件view不能同时在多个activity存在,需要不停移除添加

3.通过activity进行视图嵌套实现。view对象只能依赖一个父对象(容器),不能进行同一时间添加到多个容器中(根据控件事件的分发传递原理,如果一个view对象能够添加到多个容器中,会引起事件传递的混乱,因此Android系统规定一个普通view只能同一时间在一个容器中).android中 activity是一个独立的组件,是各种触摸事件的出发点以及终结点,因此可以将activity作为一该个普通view,这样一来就可以所有activity公用一个view对象了,该方式实现,所有的activity都能同时添加该view,该view都是同一个对象,保证了在所有activity显示的一致性,同时方式实现,功能耦合低,有利于维护修改,占用较少的内存

具体实现:
将该控件封装成activity,activity启动设置成单列加载模式,其他activity需要继承ActivityGroup,通过mActivityManager来获取子activity的view,进行添加到新的activity中进行显示,通过activity进行视图嵌套

//启动activity获取该activity根视图
View view=mActivityManager.startActivity(“”,new Intent(this, ActivityTest1.class)).getDecorView();
//将activity的根视图添加到另外一个activity视图中
contentlayout.addView(mActivityManager.startActivity(“”,view,LinearLayout.LayoutParams .FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);

应用实列: 入淘宝京东购物app, 购物车模块,购物车可以在任何页面(主页,商品详情页面等页面)出现,为了保证购物车模块的独立性,降低模块间耦合性,方便维护,可以将购物车封装成Activity,设置该activity为单列,保证只有一个该购物车对象,同时能够在各种场景(activity)出现,而不是将购物车封装成一个普通的view控件

http://woshiwzy.iteye.com/blog/812707 如何将一个activity加载成一个view

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值