WindowManager實現懸浮可拖動效果

2021-06-26 20:39:24 字數 718 閱讀 8828

現在360手機衛士有個流量統計的效果,開啟流量統計後,在桌面上會出現乙個顯示流量的窗體,在任何介面都可以自由拖動。

模仿這個功能,做了乙個統計手機訊號強度的demo, 介面效果如下:

從上面的截圖可以看出,當開啟手機訊號懸浮框後,預設在右上角會出現乙個小窗體(乙個圖示加上乙個訊號強度),這個窗體附在鎖屏上(預設最上面的一層是鎖屏介面),可以隨意拖動。

介面布局什麼的,在這裡就不說了。這個小窗體實際是乙個service,一直在後台執行。

建立窗體的核心**如下:

需要注意的地方都已經加了注釋,特別要注意那幾個type,有的type可以讓窗體只在某個應用介面上顯示,鎖屏介面不顯示等等,error的級別是最高的,表示可以在任何介面都可以顯示窗體。接下來就是實現拖動的效果,**如下:

基本上核心**都已經附上了,大多數都是原生api就可以實現,具體細節可以根據具體情況來除錯。

WindowManager獲取寬和高

實現implements viewmanager介面 內部類windowmanager.layoutparams 自有方法 abstract display getdefaultdisplay 對應display的用法 void getcurrentsizerange point outsmalle...

用WindowManager直接顯示View

我們android平台是乙個又乙個的activity組成的,每乙個activity有乙個或者多個view構成。所以說,當我們想顯示乙個介面的時候,我們首先想到的是建立乙個activity,然後所有的操作在activity裡面實現,或者是乙個dialog或者toast。這種方式固然簡單,但是在有些情況...

快速排序演算法實現(遞迴實現 棧實現)

基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...