在今天之前,我会说这是不可能的,让一个应用程序覆盖其他所有东西:主屏幕,应用程序,拨号器等。
如果您尝试免费应用程序“超级管理器”,它就是这样做的。它有一个图标和小部件像屏幕,将始终和任何地方显示。当图标或小部件在屏幕上时,您仍然可以与在其后面运行的应用程序进行交互。
这怎么可能,我们如何重新创建这个功能?
更新: 这是一些实际的图像。您可以看到叠加的应用程序作为Dolphin顶部的小箭头运行。然后当你按它时,你可以看到应用程序作为一个大小部件运行。即使在窗口小部件启动时,您仍然可以与后台应用程序进行交互。在这个例子中,dolphin是后台应用程序。
答案 0 :(得分:6)
答案 1 :(得分:5)
TYPE_SYSTEM_OVERLAY窗口不会在ICS平台上收到任何触摸事件,当然,在ICS或未来的设备上使用TYPE_SYSTEM_OVERLAY是不可行的。
更新时间:2016/5/4 在Android 4.0~4.3上,TYPE_TOAST无法接收触摸事件。它与TYPE_SYSTEM_OVERLAY相同。在Android 4.4及更高版本中,TYPE_TOAST已从排除列表中删除,因此您还可以使用TYPE_TOAST在Android 4.4及其设备上接收触摸事件。
答案 2 :(得分: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(或变体)创建活动。