今天小編帶領大家來看一個基于 Android 的彈窗庫,其實對于做 Android 的兄弟姐妹來講,各種樣式的彈窗,尤其是自定義 dialog,popupwindow 各式各樣非常煩人。
而最煩人的就是各種彈出方式,各種位置彈出,每次自己寫都非常麻煩。
尤其是在 Android 7.0 之后,popupwindow 有個bug,彈窗陰影有時候在底部總是留有空白,特別煩人。
但是,今天給大家推薦的這個開源項目,真的是功能超級強大,可以自定義各式各樣的彈框,dialog,popupwindow 等等。
全網(wǎng)超過 3000 的多 star 數(shù),而是作者一直在用心的維護??梢哉嬲鉀Q大家在做 Android 開發(fā)時,各種彈框的煩惱。
這個開源項目就是:XPopup 。
這個開源庫:功能強大,UI 簡潔,交互優(yōu)雅的通用彈窗!可以替代 Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner 等組件,自帶十幾種效果良好的動畫, 支持完全的 UI 和動畫自定義!它有這樣幾個特點:
功能強大,內(nèi)部封裝了常用的彈窗,內(nèi)置十幾種良好的動畫,將彈窗和動畫的自定義設計的極其簡單;目前還沒有出現(xiàn) XPopup 實現(xiàn)不了的彈窗效果。內(nèi)置彈窗的 UI 是固定的,但允許你使用項目已有的布局或者自己的布局,同時還能用上 XPopup 提供的動畫,交互和邏輯封裝。
UI 和動畫簡潔,遵循 Material Design,在設計動畫的時候考慮了很多細節(jié),過渡,層級的變化;或者說是模擬系統(tǒng)組件的動畫,具體可以從 Demo 中感受
交互優(yōu)雅,實現(xiàn)了優(yōu)雅的手勢交互以及智能的嵌套滾動,具體看 Demo
適配全面屏,目前適配了小米,華為,谷歌,OPPO,VIVO,三星,魅族,一加全系全面屏手機
通用性,項目需求復雜多變,產(chǎn)品經(jīng)理天馬行空,XPopup 力求做到交互和動畫通用;至于彈窗的 UI 和邏輯可能需要你自定義
易用性,所有的自定義彈窗只需繼承對應的類,實現(xiàn)你的布局,然后在 onCreate
方法寫邏輯即可
編寫本庫的初衷有以下幾點:
項目有這樣常見需求:中間和底部彈出甚至可拖拽的對話框,指定位置的 PopupMenu 或者 PopupWindow,指定區(qū)域陰影的彈出層效果
市面上已有的類庫要么功能不足夠,要么交互效果不完美,有著普遍的缺點,就像 BottomSheet 存在的問題一樣。比如:窗體消失的動畫和背景漸變動畫不一致,窗體消失后半透明背景仍然停留一會兒
設計思路:綜合常見的彈窗場景,我將其分為幾類:
Center 類型,就是在中間彈出的彈窗,比如確認和取消彈窗,Loading 彈窗
Bottom 類型,就是從頁面底部彈出,比如從底部彈出的分享窗體,知乎的從底部彈出的評論列表,我內(nèi)部會處理好手勢拖拽和嵌套滾動
Attach 類型,就是彈窗的位置需要依附于某個 View 或者某個觸摸點,就像系統(tǒng)的 PopupMenu 效果一樣,但 PopupMenu 的自定義性很差,淘寶的商品列表篩選的下拉彈窗也屬于這種,微信的朋友圈點贊彈窗也是這種。
DrawerLayout 類型,就是從窗體的左邊或者右邊彈出,并支持手勢拖拽;好處是與界面解耦,可以在任何界面顯示 DrawerLayout
大圖瀏覽類型,就像掘金那樣的圖片瀏覽彈窗,帶有良好的拖拽交互體驗,內(nèi)部嵌入了改良的 PhotoView
全屏彈窗,彈窗是全屏的,就像 Activity 那樣,可以設置任意的動畫器;適合用來實現(xiàn)登錄,選擇性的界面效果。
自由定位彈窗 (Position),彈窗是自由的,你可放在屏幕左上角,右下角,或者任意地方,結合強大的動畫器,可以實現(xiàn)各種效果。
各種效果應有盡有,簡單放幾張圖吧,大家感受一下:
開源項目地址:https://github.com/li-xiaojun/XPopup