Android 懸浮框實現方法

l_serein發表於2013-05-31
朋友們是對360的懸浮框有興趣,下面將其實現的大體流程與大家分享一下:
不知道大家對WindowManager瞭解有多少,實際上懸浮框就是WindowManager,其對應一個內部佈局引數,LayoutParams,通過修改LayoutParams物件的引數可以設定懸浮框的顯示屬性,而屬性的區別決定了懸浮框顯示的方式。
如果想只是在某個頁面中顯示,則將類別資訊設定成Application TYPE_APPLICATION,如將類別資訊設定成TYPE_SYSTEM_OVERLAY,則將windowManager的懸浮設定成系統類別,這樣在任何應用程式中均可以正常的顯示。
關於WindowManager.LayoutParams的設定資訊,強點選。
言歸正傳,360的懸浮框,實際上就是對window物件進行了一些設定,而這些設定均是通過windowManager物件完成的,呼叫windowManager的addView方法將View新增進window介面,此時在介面上就會顯示出相應的View,在繫結的View中可以監聽點選、觸控等事件。通過此種設計,不會影響到Activity頁面的顯示及Activity繫結View事件的觸發。
運用上面的知識,小弟寫了一個demo,該demo的功能如下,浮動按鈕預設顯示在螢幕右方中間的位置,當使用者點選該浮動按鈕,會觸發響應的事件,顯示出浮動框,當使用者點選浮動框中的某一個選單時會觸發點選事件,通過toast的形式提示使用者,為了說明該功能不影響使用者正常介面的操作,在Activtiy繫結的View中,新增了一個Button,當點選該Button時,觸發Button點選事件,以toast的形式顯示點選資訊。

相關文章