繁体   English   中英

在所有其他应用程序之上运行的Android应用程序?

[英]Android app that runs on top of ALL other apps?

在今天之前我会说这是不可能的,让一个应用程序覆盖在其他一切之上:主屏幕,应用程序,拨号器等。

如果您尝试免费应用程序“超级经理”,它就是这样做的。 它有一个图标和小部件像屏幕,将始终和任何地方显示。 当图标或小部件在屏幕上时,您仍然可以与在其后面运行的应用程序进行交互。

这怎么可能,我们如何重新创建这个功能?

更新:这是一些实际的图像。 您可以看到叠加的应用程序作为Dolphin顶部的小箭头运行。 然后当你按它时,你可以看到应用程序作为一个大小部件运行。 即使在窗口小部件启动时,您仍然可以与后台应用程序进行交互。 在此示例中,dolphin是后台应用程序。

图片1

替代文字

看到这个:

创建系统覆盖窗口(始终在顶部)

检查接受的答案的评论部分。 您将找到工作示例项目的链接。

== ==编辑

链接到项目

从Android 4.x开始,Android团队Android团队通过添加新函数adjustWindowParamsLw()修复了潜在的安全问题,其中它将为TYPE_SYSTEM_OVERLAY窗口添加FLAG_NOT_FOCUSABLE,FLAG_NOT_TOUCHABLE和删除FLAG_WATCH_OUTSIDE_TOUCH标志。

那个TYPE_SYSTEM_OVERLAY窗口不会在ICS平台上收到任何触摸事件,当然,使用TYPE_SYSTEM_OVERLAY在ICS或未来的设备上是不可行的。

更新:2016/5/4 TYPE_TOAST无法在Android 4.0~4.3上接收触摸事件。 它与TYPE_SYSTEM_OVERLAY相同。 在Android 4.4及更高版本中,TYPE_TOAST已从排除列表中删除,因此您还可以使用TYPE_TOAST在Android 4.4+设备上接收触摸事件。

这可以通过组合来完成。 初始按钮是通过创建TYPE_SYSTEM_OVERLAY类型的窗口完成的。 这些窗口无法获得焦点,但是您可以使用FLAG_WATCH_OUTSIDE_TOUCH来获取触摸事件并匹配坐标以实现您已被触摸。

类似地,有http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_SYSTEM_ALERT (和TYPE_SYSTEM_DIALOG)。

最后,可以使用http://developer.android.com/reference/android/R.style.html#Theme_Translucent (或变体)创建活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM