基于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:下载地址
基于Android 4.4 开发的多窗体系统 开放源代码的更多相关文章
- 基于zigbee与tiny4412开发板的环境监测系统
		
一.开发板环境搭建 1.tiny4412 linux系统的布置 参考博客:http://www.cnblogs.com/luoxiang/p/4186391.html 二.boa服务器的搭建 下载 ...
 - 基于XMPP 协议的开发 android
		
设计过一款基于开源的XMPP即时通信协议的软件.採用C/S协议,通过GPRS无线网络用TCP协议到server.以架设开源的Openfire server作为即时通讯平台 系统主要由下面部分组成:一是 ...
 - Android Studio 蓝牙开发实例——基于Android 6.0
		
因项目需要做一个Android 的蓝牙app来通过手机蓝牙传输数据以及控制飞行器,在此,我对这段时间里写的蓝牙app的代码进行知识梳理和出现错误的总结. 该应用的Compile Sdk Version ...
 - Android之NDK开发(转)
		
Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第 ...
 - Android之NDK开发
		
转自:http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支持C ...
 - [Android NDK/JNI-1A]-开发环境搭建
		
NDK简介 NDK能干什么:NDK使得在android中,java可以调用C 函数库. 1.Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意 ...
 - 【转】Android之NDK开发
		
原文网址:http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支 ...
 - 基于Android 平台简易即时通讯的研究与设计[转]
		
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...
 - 基于Android应用《玩转英语》(总报告)
		
基于Android应用<玩转英语> 摘 要 ...
 
随机推荐
- ubuntu14.04安装wine以及国际版QQ
			
公社(http://www.linuxidc.com/linux/2014-06/103768.htm)说: Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在 ...
 - ERROR 2003 (HY000): Can't connect to MySQL server
			
http://blog.csdn.net/longxibendi/article/details/6363934 一.问题的提出 /usr/local/webserver/mysql/bin/mysq ...
 - 关于微软RDLC报表打印时文字拉伸问题(Windows server 2003 sp2)
			
最近我们开发的打印服务频频出现打印文字拉伸问题,客户意见络绎不绝,最为明显的是使用黑体加粗后 “2.0份” 打印出来后小数点几乎看不见了,用户很容易误认为 “ 20份” .所以问题达到了不得不停下手上 ...
 - 实现windows和linux的NFS交互
			
说明:本文是Omni-NFS-X Windows与Linux间通讯的另一种方式和在windows中配置使用NFS客户端的杂交篇 概述 windows/winnt4.0/win2000与Linux/Fr ...
 - Python中lstrip使用心得
			
lstrip方法用来去除字符串从首位开始与之相匹配的字符.例如: a = 'c' b = 'calendar' print(b.lstrip(a)) 输出结果是 'alendar'. 之前我也一直是这 ...
 - PAT (Basic Level) 1004. 成绩排名 (20)
			
读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...
 - BZOJ 1854 游戏
			
Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有\(2\)个属性,这些属性的值用\([1,10000]\)之间的数表示.当他使用某种装备时,他只能使用该 ...
 - HTTP 状态代码
			
转自:https://support.google.com/webmasters/answer/40132 HTTP 状态代码 如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通 ...
 - BZOJ3039: 玉蟾宫&wikioi2491 玉蟾宫
			
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 430 Solved: 265[Submit][Status] Descriptio ...
 - android 自动化(1)
			
学习android自动化测试要感谢一个朋友耐心的指导 环境搭建:(需要java JDK 以及android SDK) JDK:http://www.oracle.com/technetwork/jav ...