Android開發:一句話搞定PopupWindow
今天教大家一個PopupWindow,希望對大家有所幫助;
在給大家分享之前,這裡推薦下我自己建的Android開發技術分享交流平台 :653961128,不管你是小白還是大牛,我都挺歡迎,不定期分享乾貨,包括2017最新的Android企業案例學習資料和零基礎入門教程,歡迎初學和進階中的小夥伴,大家一起交流學習,共同進步。
前言
設計圖給出的效果
最終的效果
最終代碼
common_tv_right_more 的點擊事件
接著開始想和學習怎麼做了。
使用場景
PopupWindow,顧名思義,就是彈窗,在很多場景下都可以見到它。
例如ActionBar/Toolbar的選項彈窗,一組選項的容器,或者列表等集合的窗口等等。
Advertisements
基本使用
使用PopupWindow很簡單,可以總結為三個步驟:
創建PopupWindow對象實例;
設置背景、註冊事件監聽器和添加動畫;
顯示PopupWindow。
使用showAsDropDown方法顯示PopupWindow
通常情況下,調用showAsDropDown方法后PopupWindow將會在錨點的左下方顯示(drop down)。
但是,有時想讓PopupWindow在錨點的上方顯示,或者在錨點的中間位置顯示,此時就需要用到showAsDropDown方法的xoff和yoff參數了。
這裡我們的目的不僅包括上面提到的兩種情況(錨點上方或錨點中部),而是囊括了水平和垂直方向各5種顯示方式:
水平方向:
Advertisements
ALIGN_LEFT:在錨點內部的左邊;
ALIGN_RIGHT:在錨點內部的右邊;
CENTER_HORI:在錨點水平中部;
TO_RIGHT:在錨點外部的右邊;
TO_LEFT:在錨點外部的左邊;
垂直方向:
ALIGN_ABOVE:在錨點內部的上方;
ALIGN_BOTTOM:在錨點內部的下方;
CENTER_VERT:在錨點垂直中部;
TO_BOTTOM:在錨點外部的下方;
TO_ABOVE:在錨點外部的上方。
下面來看張圖:
showAsDropDown 可以做哪些效果
由上面的基本方法中我可以看到View contentView=LayoutInflater.from(context).inflate(layoutRes, null, false);這個view 的產出,所以就可以把它單獨拿起來,在單獨頁面中和xml 處理,底色背景和角度了,以及整個view 中的點擊事件處理,並且顯得不那麼啰嗦了,看簡單的代碼,就用到build設計模式,突出了這個模式的優點,不斷添加 各個設置條件。
build設計模式
首先看是build 的時候創建view 或者說產出view 為了提供顯示用
再看build 做了哪些處理
主要在show 中;對偏移量的處理,並且在合適的位置處理,在上面基本中說道。
大體流程就是這些了,至於點擊事件,進行事件監聽,也是從產生的pop的時候傳遞過來的。
所有代碼
最終你可以
最後 同類想法,你可以寫一個評論的pop
例如:
點擊彈出鍵盤 pop 顯示處理,鍵盤消失pop 消失。
這個之前也有個項目裡面有,但是沒有這麼寫,就堆在一起,也沒有反思,那個時候還沒有blog,現在想一想真的太像了。
分享到這裡就分享完了,希望對大家有所幫助,最後那個所有代碼後面的截圖是一起的,希望對你學習沒有什麼影響,喜歡我的可以關注我哦