--- 在Android众多弹窗中,论坑的数量,PopupWindow毫无疑问遥遥领先。 PopupWindow很多时候真的是让人又爱又恨,爱的是它的定制自由,恨的是它的表现不同。 本人从实习时接触到PopupWindow,就已经感到PopupWindow的强大之处,但因为坑实在太多,因此一直都是 **“想用,但不敢用”**,然而一直避免也无法解决问题,因此BasePopup的创作初衷由此开始。 - 2016年,写出第一版BasePopup,彼时的BasePopup仅仅只有三个文件,以填坑为主。 - 2017年,BasePopup迭代到1.7.4版本,某种意义上来说1.7.4是第一次重构之前的稳定版本,该版本依然是以填坑为主,尽可能的兼容因系统修改导致的种种问题。 - 2018年上半年,第一次重构,迭代至1.9.4版本,该版本是2.0时代之前的最后一个版本,也是最多人使用的版本。该版本添加了**背景模糊**(首次添加在1.9.1版本中)的特性,也是从这个版本开始奠定了BasePopup的整体框架,并走向第二次重构。 - 2018年下半年,第二次重构,BasePopup迎来v2时代,经历了四个多月的重构,解决了1.9.4的布局强制两层的限制,同时建议用户尽早迁移到2.0版本,为了防止迁移困难提供了迁移文档,发布2.0.8正式版。 - 2018年底,对2.0.8再次重构,发布2.1.0版本,同时也是v2时代里最多人使用的版本。该版本添加了许多新的特性,总结起来就是使用更加简单,也更加自由。同时也发布了详细的README和GitHub的wiki文档。 - 2019年,发布2.2.0版本,历时5个月。如果说前面的版本是量的改变,2.2.0的发布则是质的飞跃,从2.1.0到2.2.0之中经历了数十个Candy预览版,在这个版本中大胆的hook掉系统的WindowManager,测量和布局交由BasePopup统筹,进而实现了以前很难实现的功能,同时也算是完全避免了系统版本的差异性,真正开始实现BasePopup的初衷。 - 2019年9月,第三次重构,本次重构旨在缩减BasePopup的代码量,呈现更简洁,更好读的代码,同时编写本文档,减少Github首页的文字量。 - 2020年2月,第三次重构完成 未来的路还很长,随着技术的提升,复盘,重构也会一直都会进行。 当BasePopup走到10.x的时候,又会是怎样的一番景象呢? 我们,拭目以待 我们,一路前行 ## 致谢 开源之路也离不开大家的帮助,在这里衷心感谢那些曾经帮助过我的朋友,也感谢一些项目带给我的灵感。 - 感谢FastBlur的作者开源的方法:[**源码**](https://github.com/paveldudka/blurring/blob/master/app/src/main/java/com/paveldudka/util/FastBlur.java) - 感谢[**@Weishu大神**](https://github.com/tiann/FreeReflection)的绕过Api限制的方法,文章地址:[**另一种绕过 Android P以上非公开API限制的办法**]([http://weishu.me/2019/03/16/another-free-reflection-above-android-p/](http://weishu.me/2019/03/16/another-free-reflection-above-android-p/)) - 感谢您对我的支持,您的issue或是建议,是我持续更新的动力,愿我们可以共同进步-V- ![](https://img.kancloud.cn/8e/4b/8e4b1d397a8c84fcaa6bcb3de1e8281d_1280x720.png) > Github:[https://github.com/razerdp/BasePopup](https://github.com/razerdp/BasePopup) >邮箱:razerdp123@gmail.com >微信交流群:因QQ没时间管理,因此解散,同时开通微信群,主要用于交流和BasePopup的反馈,为了保证微信群的质量,因此只有打赏了之后才能进群~ >**因近期发现无法回复付款方,因此如果您已经微信支付打赏并需要进群,请重新再扫一遍支付宝并支付,我会退款给您并联系您~** ![](https://img.kancloud.cn/cc/37/cc37ef992fd8d0dbb6ddc228d9a908e7_603x661.png)