可移動懸浮球的實現

2021-09-25 08:35:30 字數 830 閱讀 4193

近期看到魅族的懸浮球功能,初步研究了下,實現了基本的功能。

window:乙個抽象類,具體實現在phonewindow。表示乙個視窗的概念,android中所有的view都是通過window來顯示的,actvity/dialog/toast中的view都是附加在window上的——window是view的直接管理者。view的事件是由window傳遞給decorview,然後decorview傳遞給view;setcontentview的底層也是通過window來完成

windowmanger:window的管理者。有三大介面 window新增——addview,window刪除——removeview,window更新——updateviewlayout

private void setfloatingbutton()

首先,要先給懸浮球設定ontouchlistener

mfloatingbtn.setontouchlistener(this);

然後,在ontouch方法中,不斷更新view的位置即可,更新view位置使用了windowmanger的window更新(updateviewlayout)方法

@override

public boolean ontouch(view v, motionevent event)

return false;

}

這樣,乙個具備基本功能的懸浮球效果就實現了。

擴充套件:1.給這個懸浮球賦予更豐富的功能

2.在懸浮球隨手指滑動的效果上做些動畫,提公升滑動體驗

vc 實現懸浮窗,迅雷360懸浮球效果

1.setwindowrgn建立圓角懸浮窗dlgfloat rgn.createroundrectrgn rect.left,rect.top,rect.width rect.height 13,13 m rgnwnd.deleteobject m rgnwnd.createrectrgn 0,0,...

WindowManager實現懸浮可拖動效果

現在360手機衛士有個流量統計的效果,開啟流量統計後,在桌面上會出現乙個顯示流量的窗體,在任何介面都可以自由拖動。模仿這個功能,做了乙個統計手機訊號強度的demo,介面效果如下 從上面的截圖可以看出,當開啟手機訊號懸浮框後,預設在右上角會出現乙個小窗體 乙個圖示加上乙個訊號強度 這個窗體附在鎖屏上 ...

微信小程式實現可移動懸浮按鈕(超簡單)

最近被使用者要求再每個頁面顯示乙個懸浮按鈕實現業務,what 雖然內心不願意,但是身體還是得接受。movable area movable view direction all movable view movable area wxss movable area movable view是不是非常...