編輯:Android開發實例
iPhone有個很好用的白色圓點,今天就來研究下Android中的懸浮框,這裡主要是實現一個快捷鍵的功能,當然也可以在懸浮框中做想做的事!
懸浮窗的實現主要是通過WindowManager實現,當然WindowManager只是一個接口,想了解源碼的同志們可以去看WindowManagerImpl,懸浮框主要是通過WindowManager中的addView,updateView,removeView實現。
WindowManager.LayoutParams這個類用於提供懸浮窗所需的參數。
WindowManager.LayoutParams參數說明:
• type 用於確定懸浮窗的類型(window類型,window有三種類型,應用window,子window,系統window,其中懸浮窗中使用的是系統window),一般使用TYPE_PHONE,表示在所有應用程序之上,狀態欄之下,當然這裡還提供了很多類型,TYPE_STATUS_BAR(狀態欄)TYPE_SEARCH_BAR(搜索框)TYPE_SYSTEM_ALERT(系統提示框,例如電量很低時提示)等等,有很多,根據需求去選擇
• flags 用於確定懸浮窗的行為,FLAG_NOT_FOCUSABLE(window不需要獲得焦點,也不需要接收各種輸入事件)FLAG_NOT_TOUCHABLE(不可點擊)FLAG_NOT_TOUCH_MODAL(系統會通過當前window區域以外的單擊事件傳遞給底層的window,當前window區域以內的單擊事件則自己處理)FLAG_SHOW_WHEN_LOCKED(顯示在鎖屏的界面上)等等
• gravity 用於確定懸浮窗的對齊方式
• x 用於確定懸浮窗的橫坐標
• y 用於確定懸浮窗的縱坐標
• width 值用於指定懸浮窗的寬度
• height 值用於指定懸浮窗的高度
了解這些參數基本就能創建一個懸浮框了
Java代碼以上就是懸浮框的過程,當然使用系統window必須要申請權限:
XML/HTML代碼通過上面這個過程知道了如何通過WindowManager創建懸浮框
下面給你一個Demo,其中有兩個懸浮窗,第一個懸浮窗就是普通的懸浮窗,第二個懸浮窗加了一些判斷,可以直接在app中使用,這個懸浮窗在桌面和你自己的app中顯示
地址:https://github.com/zimoguo/FloatWindow
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
在RSS概述中簡單介紹了RSS,本節將為大家講解RSS文件的解析,而又因為RS
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩