Android Launcher负一屏实现方案@TOC
-
整体方案:
利用Google Feed屏方案, 基于Google定义的ILauncherOverlay和 ILauncherOverlayCallback两个接口,通过AIDL通信方式实现。 Launcher作为客户端, 负一屏是独立的应用作为服务端。
Launcher将其Activity的window属性和滑动信息传递给应用端。应用端根据Launcher窗口属性创建一个相同属性的窗口,以WindowManager.addView方式添加此浮动窗口,并根据Launcher传递过来的滑动信息,用translationX改变负一屏View的位置来实现窗口的顺势进入显示区和滑出显示区的效果。 -
方案有缺点:
缺点:实现复杂,需要应用自己实现View显示滑动等处理。
优点:与Launcher解构,虽然负一屏的显示依赖launcher的activity的token,但运行在独立的进程中,不影响Launcher性能。 -
具体实现过程:
客户端Launcher的实现:
1)客户端实现ILauncherOverlayCallback接口。
- 接口