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

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:下载地址

时间: 2024-10-21 15:24:24

基于Android 4.4 开发的多窗体系统 开放源代码的相关文章

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

Hi, 这是我基于Android 4.4开发的多窗口系统,还有很多不足,还请多多指教啊,代码已经全部开源. 视频地址 源码地址 Done: 1. APP以窗口化显示 在 PhoneWindowManager::layoutWindowLw() 中通过packageName过滤,使指定的APP以非全屏尺寸显示,因为一个APP通常是以一个task为单位,显示多个activity,因此采用packageName过滤的方法. 2. 多个APP同时处于 onResume 状态 修改AMS中通知onPaus

12 信息2班 《基于Android的软件开发》课程成绩

作业 作业01:为 TextView 添加监听器和后退按钮. (参考教材第02章)作业02:完善GeoQuiz应用,堵住漏洞. (参考教材第05章)作业03:日期格式化. (参考教材第08章)作业04:更多对话框. (参考教材第12章)作业05:在 HelloMoon 应用中播放视频. (参考教材第13章)作业06:用于列表的空视图. (参考教材第16章)作业07:使用外部存储. (参考教材第17章) 作业成绩 作业 1 作业 2 作业 3 作业 4 作业 5 作业 6 作业 7 备注 李秋萍

基于XMPP 协议的开发 android

设计过一款基于开源的XMPP即时通信协议的软件.採用C/S协议,通过GPRS无线网络用TCP协议到server.以架设开源的Openfire server作为即时通讯平台 系统主要由下面部分组成:一是:server,负责管理发出的链接或者其他实体的会话.接收或转发XML 数据给client,它与server链接,通过XMPP协议获得由server或不论什么其他相关的服务锁提供的所有功能,三是协议网关的信息与外部消息系统但是不信息间的翻译,再就是XMPP网络,实现各个服务 client间的链接.系

Android之NDK开发

一篇文章: Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可

[Android NDK/JNI-1A]-开发环境搭建

NDK简介 NDK能干什么:NDK使得在android中,java可以调用C 函数库. 1.Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”. 2.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,

【转】Android之NDK开发

原文网址:http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应

基于Android 平台简易即时通讯的研究与设计[转]

摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:Android 平台:即时通讯 (本文中图表点击附件即可见) 1 Android 平台简介Android 是Google 公司于2007年11月5日推出的手机操作系统,经过2年多的发展,Android平台在智能移动领域占有不小的份额,由Google为首的40 多家移动通信领域的领军企业组成开放手机联盟(

Android之NDK开发(转)

Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的.

基于Android平台简易即时通讯的研究与设计

1 Android平台简介 Android是Google公司于2007年11月5日推出的手机操作系统,经过2年多的发展,Android平台在智能移动领域占有不小的份额,由Google为首的40多家移动通信领域的领军企业组成开放手机联盟(OHA).Google与运营商.设备制造商.开发商和其他第三方结成深层次的合作伙伴关系,希望通过建立标准化.开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统.正因如此,Android正在被越来越多的开发者和使用者所接受.近日,Google发言人Ant