打造一個擴展性強的的抽象BasePopup類
首先獻上github地址~
https://github.com/razerdp/BasePopup
然后獻上博客地址~
http://blog.csdn.net/mkfrank/article/details/50522666
因為已經在博客發表過了,所以這里就不再復制粘貼了(CSDN每次修改都得審核,好麻煩的說)
在下說說思路吧:
其實原理很簡單,因為popupWindow支持我們添加一個View作為內容,但是關于popup的動畫控制不太方便,所以我們可以這么想――
1 - 我們弄一個全屏的popup,添加一個全屏的view(ViewGroup)
2 - 這個全屏的view有一個灰色半透明的背景色(自己喜歡-V-)
3 - 這個viewGroup里面有我們需要展示的view,比如選擇菜單,listView什么的,甚至來個viewPager都可以
4 - popup我們就不弄動畫了,直接讓它展示,我們的動畫針對的是我們需要展示的view
5 - 實際效果就是:我們show出來,于是先出現一個灰色半透明的浮層,然后我們需要展示的view開始播放動畫~
6 - 因為這個view是我們自定的,所以可定制性很高,而且動畫可以我們自己控制哦
7 - 繼承我們的BasePopup,再也不用這么麻煩弄那么多代碼了。
想要優化的地方:
1 - 在dismiss()時也弄個退出的動畫。我曾經試過在onDismissListener里面弄,但效果不太好。
最近想到這么一個方法:
在dismiss前先播放動畫,給動畫弄個AnimationListener,在onAnimationEnd里真正的dismiss掉
感覺這個方法可以,但我暫時還沒試驗。
這個gitHub我會維護到我見過的Popup都能通過這個BasePopup簡單的擴展出來為止,如果不能擴展,就意味著還有進步的地方哈哈-V-
目前實現了這三個效果圖:
從底部上滑:
仿微信朋友圈的評論彈窗:
比較常見的放大縮小:
后續我會陸陸續續的添加更多好玩的Popup進來的
來自: http://www.jcodecraeer.com//a/anzhuokaifa/androidkaifa/2016/0116/3876.html