近期看到魅族的懸浮球功能,初步研究了下,實現了基本的功能。
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是不是非常...