gpt4 book ai didi

android - 创建主页按钮仍然有效的系统覆盖?

转载 作者:IT老高 更新时间:2023-10-28 22:02:55 31 4
gpt4 key购买 nike

我正在尝试创建一个始终显示在屏幕上的按钮。

  1. 按钮应该是可点击的,并且按钮正下方的任何内容不应在打印机上激活。
  2. 正在运行的 Activity 或主屏幕按钮后面应该仍然可以工作,意味着用户仍然应该是能够与家互动屏幕或应用程序。
  3. 软键按钮应该仍然有效:主页,返回、菜单等

以下代码执行 #1 和 #2,但软键按钮不再起作用:

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);

将其更改为此会禁用点击覆盖,但 #2 和 #3 有效:

WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,

最后在这个例子中,覆盖层和它后面的内容被点击:

WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,

如何更改此设置以使叠加层可点击,直接位于其下方的内容不可点击,并且叠加层之外的所有内容(包括主页按钮)都可以正常工作?

一个执行所有这些的示例应用程序是 super 管理器。

更新:我发现以下允许使用主页按钮,但仍然不能使用其他按钮:

        WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | 
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH

,

最佳答案

  1. 您不能将窗口类型组合在一起。您将创建一些随机的其他类型。老实说,您使用的窗口类型确实不是供应用使用的(这就是为什么它们中有“系统”一词)。

  2. “软键按钮不再起作用”是什么意思?如果这是一个大问题(我想知道执行此操作的代码),那么应该不可能停止在家工作。其他键被传递到当前键焦点;如果您不想集中注意力,请使用 FLAG_NOT_FOCUSABLE

  3. 每个标志的文档应该很清楚它的作用,所以选择你想要的标志。 FLAG_NOT_FOCUSABLE 因为你不想接受关键事件。 FLAG_NOT_TOUCH_MODAL 因为您不想阻止窗口之外的触摸事件。您并没有说您想了解窗外的打印机,因此没有理由使用 FLAG_WATCH_OUTSIDE_TOUCH

关于android - 创建主页按钮仍然有效的系统覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750814/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com