簡體   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