基于Android 4.4 开发的多窗口系统 开放源码


分类: android   6318人阅读  评论(76)  收藏  举报

Hi, 这是我基于Android 4.4开发的多窗口系统,还有很多不足,还请多多指教啊,代码已经全部开源。



视频地址

源码地址


Done:

1. APP以窗口化显示

在 PhoneWindowManager::layoutWindowLw() 中通过packageName过滤,使指定的APP以非全屏尺寸显示,因为一个APP通常是以一个task为单位,显示多个activity,因此采用packageName过滤的方法。


2. 多个APP同时处于 onResume 状态

修改AMS中通知onPause()的地方,指定pkg不通知pause。关于AMS中activity生命周期控制的地方,是以后需要着重优化的。


3. 修改Window的touch region

修改InputMonitor::addInputWindowHandleLw(), 使得Window拦截touch event的region只在本窗口范围内。


4. Touch的window 上移到屏幕顶层

在AMS,WindowSession中新增接口,在ViewRootImpl里拦截touch event,通过 windowSession通知WMS,和AMS,将Window 和 task 移至顶层。


5. RecentActivity 启动到 APP stack中

由于同stack中task切换时的visibility切换还较好控制,但是如果跨stack切换,控制较为困难,因此将RecentActivity移至APP stack中启动,这样呼出RecentActivity,切换APP时,不会出现一些显示上的bug。


6. 为Window增加titlebar

在PhoneWindow::generateLayout() 中增加titlebar,包括close, minimum, maximum, drag area, resize。

minimum尚未实现,因为还要结合AMS做一些控制activity生命周期的工作。


7. 增加入口APP

提供用户选择让哪个APP以窗口化形式启动,并在ServiceManager中注册了一个自定义的service,里面存放了要窗口化显示的pkgs,然后供framework各处调用。


Next plan:

1. 修正各种bug

bug之多简直不忍直视了。。。关键还是对源码很多地方不够熟悉,因此总是头痛医头,脚痛医教。


2. 熟悉AMS控制流程

设计合理的多窗口activity生命周期,完成 minimum。

 

更新于20140730-------------------------------------------------------------------------------------------

简单的介绍multi window开发过程的PPT:下载地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值