android负一屏实现方案

方案一:

桌面自行开发,可以快速完美的加入负一屏,但是当负一屏的业务越来越多时,会拖累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负一屏是指在Android系统中,在主屏幕的左侧添加一个额外的屏幕,用于显示一些特定的信息、小部件或者快捷方式。在某些版本的Android系统中,负一屏功能是默认存在的,但在其他版本中可能被取消或需要额外的设置才能启用。 实现Android负一屏功能的方法可以参考以下步骤: 1. 在Launcher3的核心类Launcher.java中添加负一屏功能的相关代码。 2. 实现负一屏的主要功能,包括显示和隐藏负一屏的窗口、处理滑动事件以及与主屏幕的联动效果等。 3. 在服务端App中创建一个服务,并实现ILauncherOverlay接口,该接口用于实现负一屏的相关功能。 4. 在客户端调用服务端的接口,创建一个Window,将客户端的LayoutParams中的属性赋值给服务端的Window,从而在主屏幕上方显示负一屏的窗口。 5. 根据传入的滑动数值调整负一屏窗口中的视图的translationX属性,以实现滑动效果。 6. 对应处理负一屏的显示与隐藏,可以通过服务端接收客户端传来的指令来控制负一屏的显示与隐藏。 7. 负一屏窗口上的视图需要处理触摸事件,根据滑动距离计算滑动进度,并将进度回调给Launcher,以实现主屏幕与负一屏的联动效果。 请注意,以上仅是一种实现负一屏功能的方法,具体实现方式可能因系统版本和需求而有所不同。你可以参考提供的引用内容来了解更多关于Android负一屏实现细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值