方案一:

桌面自行开发,可以快速完美的加入负一屏,但是当负一屏的业务越来越多时,会拖累launcher的性能,内存等。

方案二:

Launcher利用反射调用负一屏APP里的类和方法创建View。

缺点:负一屏仍运行在Launcher进行,如果负一屏业务太多,则会影响Launcher的内存占用。

方案三:

利用Google的feed屏方案,导入google官方定义了两个interface接口,ILauncherOverlay和ILauncherOverlayCallback通过aidl进程间通信,从Launcher向负一屏app传递scroll数据,负一屏使用WindowManager.addView的方式添加浮动窗口,用translationX改变负一屏View的位置。

优点:与Launcher完美解耦,运行在独立的进程里,不存在影响Launcher内存问题。

缺点:负一屏View的实现难度大。

综上所述:我们采用方案三来进行负一屏的开发,具体实现技术点如下:

  1. 全局搜索应用作为服务端,需要实现AIDL接口类ILauncherOverlay,用于客户端(Launcher)进行接口调用。而Launcher作为客户端,需要实现AIDL回调接口(ILauncherOverlayCallback),用于服务端回调客户端的。
  2. Launcher通过bindservice后,获取IlauncherOverlay实体对象,来和服务端进行通讯,传递关键信息给服务端。
  3. Launcher在onAttachToWindow的时候,会通过IlauncherOverlay对象的windowAttached(WindowManager.LayoutParams attrs, ILauncherOverlayCallback callbacks, int options)方法,将Launcher的Activity的window属性,和Launcher实例化出来的ILauncherOverlayCallback.Stub回调传给服务端。
  4. 针对用户在屏幕的滑动操作,调用startScroll、onScroll、endScroll来通知服务端;
  5. Launcher这边打开关闭负一屏,用openOverlay、closeOverlay来通知服务端。

服务端和客户端实现demo下载地址:https://download.csdn.net/download/hsaekong/12546462

android负一屏实现方案相关推荐

  1. android负一屏类似苹果,Find X3、苹果12负一屏体验对比,谁才是真正的效率神器?...

    如今不论是iOS还是安卓系统手机,绝大部分手机都设计了负一屏功能,目的就是为了把最直接的路径和最快捷的方式带给用户.而各大手机厂商也都从不同的角度出发,设计出了各具特色的负一屏界面,但是哪个牌子的手机 ...

  2. android webview白屏,处理方案:webview 闪白屏问题

    先说一种比较尴尬的做法,之后说一种非常有效的做法,仿苹果真正的做法. android:layerType="software" 这句加在webview控件里面 说实话,对我没啥用. ...

  3. 负一屏服务端实现,精简demo源码供查阅

    前期两篇文章介绍了下在launcher上集成负一屏的方案,这个方案脱离了launcher本身的Workspace层,而采用了新方案.针对新方案有很多网友提出了很多问题. 1.google feed就是 ...

  4. Android桌面负一屏实现.md

    Android桌面负一屏实现 负一屏的实现主流有两种方式 Launcher自行开发,往Workspace中插入一个自定义的CellLayout来作为负一屏的容器. 这种方式是最常用的方案. 利用Goo ...

  5. 【学以致用】android功能实现9---Launcher之AS中,在Launcher源码中增加google负一屏的实现方法

    负一屏是相对于正常屏幕而言,正常屏幕是指桌面上用户用于摆放图标(也可以编辑图标位置)的屏幕,根据用户喜欢可以有一个或多个屏幕.在一些手机当中,包括苹果和安卓,在正常屏幕的最左边一屏,我们再往左滑,会出 ...

  6. Android 系统(70)---Android刘海屏适配方案

    Android刘海屏适配方案 什么是刘海屏 随着iPhone X发布,国内一些厂商也推出了刘海屏手机,即将发布的Android p也提供了对刘海屏的支持.so,我们的app也要提前做好适配. 屏幕的正 ...

  7. android 兼容所有刘海屏的方案大全

    转载请标明出处: https://blog.csdn.net/DJY1992/article/details/80689632 本文出自:[奥特曼超人的博客] 推荐: - ios兼容iphonex刘海 ...

  8. Launcher 谷歌负一屏集成(基于Android 9.0)

    谷歌负一屏集成(基于Android 9.0) 步骤一:Launcher3中导入并编译launcher_client.jar(此jar包存在与谷歌的serarchLauncher中) 在Android. ...

  9. android 9.0 10.0 Launcher3添加负一屏(左一屏)功能

    1.概述 在10.0的系统产品开发中,要实现负一屏功能,而在8.1以前的版本中,都带有负一屏功能,但是在9.0以后就被取消掉了,由于客户需要只能参考8.1来实现负一屏功能了 效果图: 2.Launch ...

最新文章

  1. RGBD相机参数输出定义
  2. golang中的空slice
  3. SqlServer注意事项总结,高级程序员必背。
  4. linux识别fat16还是32,FAT16 、FAT32 、NTFS、LINUX区别.doc
  5. 关于ViewTreeObserver的理解
  6. C#后台创建Excel文件的那点事儿
  7. 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay
  8. 动态规划:树形DP-景点中心(树的带权重心)
  9. java 难题_您可以避免的6种组织成长难题
  10. python绘图苹果_如何使用python代码画一个苹果?
  11. 测试用例之因果图分析法
  12. 20145325张梓靖 《信息安全系统设计基础》课程总结
  13. Msfvenom建立后门程序指令及开启监听
  14. [ 江枫]关于ORA_ROWSCN
  15. 网站出现安全证书过期的原因
  16. spring boot中小学餐饮配送系统 毕业设计源码645661
  17. Cannot connect to the Maven process.Try again later.If the problem persists...
  18. c语言窗口贴图,c语言添加图片
  19. 【CTFhub】web-信息泄露-备份文件下载-网站源码_WriteUp
  20. Python爬虫之豆瓣TOP250爬取

热门文章

  1. mysql高级篇三:常用sql技巧
  2. vue侦听器watch的使用方法详解
  3. LIBJPEG交叉编译并用其将ARGB32转JPEG
  4. (全栈旅行足迹地图打卡网站 0-1)-旅行足迹后台管理系统(足迹列表)-09(WebGIS Vue-js-go-mysql)
  5. 有红白黑三种颜色的球用循环php,北师大版小学数学四年级上册综合复习题
  6. [译]揭秘英雄联盟的自动化测试
  7. openCV Contours详解
  8. 扩大wifi信号覆盖的几种方法
  9. 虚拟经济:对网络前沿市场及社会的第一手统计(译)
  10. 2023最新版本Activiti7系列-Activiti7概述和入门案例