Android開發:一句話搞定PopupWindow

今天教大家一個PopupWindow,希望對大家有所幫助;

在給大家分享之前,這裡推薦下我自己建的Android開發技術分享交流平台 :653961128,不管你是小白還是大牛,我都挺歡迎,不定期分享乾貨,包括2017最新的Android企業案例學習資料和零基礎入門教程,歡迎初學和進階中的小夥伴,大家一起交流學習,共同進步。

前言

設計圖給出的效果

最終的效果

最終代碼

common_tv_right_more 的點擊事件

接著開始想和學習怎麼做了。

使用場景

  • PopupWindow,顧名思義,就是彈窗,在很多場景下都可以見到它。

  • 例如ActionBar/Toolbar的選項彈窗,一組選項的容器,或者列表等集合的窗口等等。

    Advertisements

基本使用

使用PopupWindow很簡單,可以總結為三個步驟:

  1. 創建PopupWindow對象實例;

  2. 設置背景、註冊事件監聽器和添加動畫;

  3. 顯示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,現在想一想真的太像了。


分享到這裡就分享完了,希望對大家有所幫助,最後那個所有代碼後面的截圖是一起的,希望對你學習沒有什麼影響,喜歡我的可以關注我哦

Advertisements

你可能會喜歡