android - 如何着手在 Android 操作系统中制作全局底部表

标签 android android-source

我正在 iMX8 平台上自定义基于 NXP 的 Android 10 BSP,我正在尝试制作一个自定义的向上滑动底部表单,该表单对操作系统来说是全局的,例如向下滑动手势上的状态/通知栏。

我关注了这个话题 here但自定义了向上滑动布局以在操作系统上提供可用的应用程序列表(基本上是应用程序中的启动器)。
虽然此功能在我的应用程序中效果很好,但我实际上希望向上滑动布局是全局的,这样无论我当前在哪个卡/应用程序上,我都可以启动应用程序。

由于此功能仅限于我的主应用程序,我将如何着手执行此操作?是否可以将其添加到 SystemUI 中?

最佳答案

是的,从技术上讲,您可以执行类似现有 NotificationBar 的操作,您可以从屏幕顶部拖动它。在你的情况下,你会从底部开始。

NotificationPanelView 的逻辑在 SystemUI 包中。

但请注意,现有的逻辑有点像意大利面条代码,因此可能需要一段时间才能理解才能添加您自己的面板。


您的另一个选择是让您的面板作为所有内容之上的叠加 View (从您的应用程序的后台服务中绘制)。参见 this answer以获得一些初步指导。

您首先会显示一个接收所有输入的透明 View 。如果检测到手势,则将工作表从底部“向上移动”,否则将输入传递给下面的应用程序。

请注意:

  • 这意味着您的服务需要成为前台服务,因此它不会被终止。
  • 如果您的应用从“设置”中被终止,BottomSheet 也会消失。
  • 您不能通过“设置”应用显示此信息(Android 有意限制)

回顾一下:
SystemUI 解决方案从长远来看会更好,限制更少……但最初开发起来更困难。
App overlay 解决方案易于实现,但存在一些可能成为交易破坏者的限制。

关于android - 如何着手在 Android 操作系统中制作全局底部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64994579/

相关文章:

android - 如何在没有 AlarmManager 的情况下使用 Android 的传感器批处理

java - Android sqlite 读取和比较问题

android - 如何将Android源类复制到项目中?

android - AOSP中,ServiceManager是在哪里实现的

android - 从 Mediastore 获取全屏缩略图 - Android

android - 使用希伯来语文本创建 CSV 文件

java - 在自定义对象 Firebase Android 中获取引用和 key

android - 它在 Android 源代码的哪个位置显示应用程序切换器?

android - 在 Android 源代码中添加预构建的二进制文件

android - AOSP - 如何让可执行文件以 root 访问权限运行?