打造一个扩展性强的的抽象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进来的