談?wù)勆蜿朅PP開發(fā)中如何開啟懸浮窗功能
2024/7/18 15:22:14 瀏覽:1261
我們?cè)跒g覽抖音或者快手一些視頻類APP時(shí),有時(shí)需要返回手機(jī)桌面處理一些事情,比如回復(fù)好友的微信信息,如果我們不想關(guān)閉當(dāng)前視頻,就要用到縮放當(dāng)前視頻到懸浮窗的功能,今天就來分享一下APP開發(fā)中開啟懸浮窗的方法,首先我們需要申請(qǐng)懸浮窗的權(quán)限,在清單文件AndroidManifest.xml中添加SYSTEM_ALERT_WINDOW的權(quán)限,通過Settings的canDrawOverlays方法判斷當(dāng)前APP能否開啟懸浮窗,如果不能需要跳轉(zhuǎn)設(shè)置頁面手動(dòng)設(shè)置開啟,為了讓懸浮窗能一直顯示在手機(jī)屏幕上,我們要用到Service服務(wù),新建一個(gè)新的服務(wù)FloatingService,我們?cè)诜?wù)中通過系統(tǒng)服務(wù)WINDOW_SERVICE獲取到懸浮窗管理WindowManager,接著用WindowManager新建一個(gè)LayoutParams的布局代理,通過布局代理設(shè)置懸浮窗的類型type,待展示的控件,例如一個(gè)按鈕BUTTON,給按鈕設(shè)置文字、顏色和寬高和位置,最后通過WindowManager的addView方法將懸浮窗控件加入到屏幕上去,最后在活動(dòng)頁面中啟動(dòng)這個(gè)服務(wù)FloatingService。另外如果懸浮窗位置遮擋其他信息時(shí),需要新增拖動(dòng)功能,可以拖動(dòng)到其他任意位置,實(shí)現(xiàn)的邏輯就是給按鈕BUTTON添加觸摸事件,在onTouch方法中處理移動(dòng)的距離,同樣調(diào)用WindowManager的updateViewLayout方法更新新的位置。