- 更简单更精准的控制显示位置,通过Gravity和offset来控制您的PopupWindow
- 本库为抽象类,对子类几乎没有约束,您完全可以像定制Activity一样来定制您的PopupWindow
- 支持Animation、Animator,随意控制您的PopupWindow的动画,再也不用去写蛋疼的xml了
- 背景变暗、背景换色甚至背景给个Drawable都是一句话的事情
- 背景模糊亦或是局部模糊也仅仅需要您一句话的配置
- 返回键控制、点击外部Dismiss控制,外部事件响应控制三者分离,再也不用担心我的PopupWindow各种按键响应问题
- 如果不满足默认的事件,没问题,我们还提供了事件传递,您的事件您来把握
- PopupWindow跟随AnchorView位置不准?屏幕外不消失?在这里,Link方法为您排忧解难
- 支持链式调用,还在为简单的PopupWindow使用不得不继承库的抽象类而感到烦躁?不妨来试试QuickPopupBuilder,想必您会爱上它的
- 请务必仔细阅读本README,每个版本升级请务必查阅更新日志,这可以为您减少不必要弯路
- 请注意引用版本的问题,Release版本是稳定版,Candy是预览版。
- Release版本:一般在Candy版本反复验证修复后发布到Release,如果您对稳定性要求较高,请使用Release版本。
- Candy版本:一般新功能、issue修复都会发布到Candy版本,Candy版本发布比较频繁,但通常会拥有新的功能,如果您喜欢试验新功能同时对稳定性要求不高,请使用Candy版本。
- Release和Candy两个版本互相切换可能会导致Build失败,这时候您Clean一下Project即可
- 如果您是以前1.x版本的用户,现在想更新到2.x,请在更新前查阅:1.x迁移到2.x帮助文档
- 从16年第一次提交到现在,本人技术也一直在进步,BasePopup也会一直迭代更新,所以,请谨慎选择版本哦~一不小心就颠覆了之前的实现。
请把下述 {$latestVersion} 替换为上面表格中对应的版本
-
Release:
- 基础库(必选):
implementation 'com.github.razerdp:BasePopup:{$latestVersion}'
- support支持库(可选):
implementation 'com.github.razerdp:BasePopup-compat-support:{$latestVersion}'
- lifecycle支持库(可选):
implementation 'com.github.razerdp:BasePopup-compat-lifecycle:{$latestVersion}'
- androidx支持库(可选,不可跟别的支持库同时存在):
implementation 'com.github.razerdp:BasePopup-compat-androidx:{$latestVersion}'
- 基础库(必选):
-
Candy
- 基础库(必选):
implementation 'com.github.razerdp:BasePopup_Candy:{$latestVersion}'
- support支持库(可选):
implementation 'com.github.razerdp:BasePopup_Candy-compat-support:{$latestVersion}'
- lifecycle支持库(可选):
implementation 'com.github.razerdp:BasePopup_Candy-compat-lifecycle:{$latestVersion}'
- androidx支持库(可选,不可跟别的支持库同时存在):
implementation 'com.github.razerdp:BasePopup_Candy-compat-androidx:{$latestVersion}'
- 基础库(必选):
请参考文档:BasePopup手册
Link👉WIKI
更新日志 (历史更新)
-
近期正在重构BasePopup,旨在代码更容易读,因此近期更新可能较慢,新版本将会对issue统一处理
-
【Candy】2.2.2
- 【Candy】190704
- 修复AnimatorSet的时间问题 fix #203
- 【Candy】190722
- 【Candy】190816
- 考虑到很多用户提出全面屏会有蒙层无法填充的问题,因此增加
setMaskLayoutWidth
和setMaskLayoutHeight
方法,该方法允许您自定义蒙层的高度 - 开始重构BasePopupWindow,本次重构将会解决遗留问题同时缩减冗余代码,并提高代码可读性
- 考虑到很多用户提出全面屏会有蒙层无法填充的问题,因此增加
- 【Candy】190904
- 重构屏幕宽高获取逻辑
- 修改supporter名字为component
- 【Candy】190912
- 重构键盘逻辑,现在键盘对齐支持选择模式了~
- 相关文档请查阅文档 键盘(输入法)
- 2019/09/20
- Demo大翻新
- 【Candy】190704
-
【Release】2.2.1(2019/06/24)
-
【Release】2.2.0(2019/05/15)
- 正式版2.2.0隆重归来,这次正式版又是一个重构版本哦~
- 优化输入法对齐逻辑
- 重构模糊逻辑:
- 经测试,720p的手机在默认参数下全屏模糊时间平均在6ms~16ms之间
- 增大默认参数的模糊程度
- 模糊淡入淡出时间跟随Popup的动画时间
- 修复模糊偶尔失效的情况
- 测量/布局相关:
- 重构测量逻辑:
- 现在在
clipToScreen
的情况下,会根据剩余空间对PopupDecor进行重新测量,以保证Popup完整的显示,如果您需要保持原始的测量值,请调用keepSize(true)
- 重构layout逻辑,针对outSideTouch优化
- 适配屏幕旋转,fix #180
- 采取flag代替各种boolean,清爽更简洁
- 减少冗余代码
- 现在在
- 重构测量逻辑:
- 优化相关:
- 增加GravityMode值,现在允许您配置
PopupGravity
的参考模式啦~- RELATIVE_TO_ANCHOR:默认模式,以Anchor为参考点,指定PopupWindow显示在Anchor的方位
- ALIGN_TO_ANCHOR_SIDE:对齐模式,以Anchor的边为参考点,指定PopupWindow的边与Anchor的哪条边对齐
- 增加minWidth/minHeight 方法,增加maxWidth/maxHeight 方法,让他们相互对应~
- 修复高度为match_parent和wrap_content的测量差异,现在可以安心地玩耍啦
- 部分Api标记过时:
setAllowDismissWhenTouchOutside-> setOutSideDismisssetAllowInterceptTouchEvent-> setOutSideTouchable
- 增加
setBackgroundView(View)
方法,现在BasePopup的背景控件可以随意由你定制啦~当然PopupWindow的背景动画控制方法依旧生效
- 增加GravityMode值,现在允许您配置
- 包拆分:
- 现在BasePopup将会进行包的拆分,源工程仅针对没有任何依赖的原生Android进行适配,如果您需要别的适配,请分别依赖以下模块或多个模块:
- 如果您需要
support
库的支持,比如DialogFragment支持,请依赖implementation 'com.github.razerdp:BasePopup-compat-support:{$latestVersion}'
- 如果您需要
lifecycle
库的支持,比如destroy里自动释放或者关闭等,请依赖implementation 'com.github.razerdp:BasePopup-compat-lifecycle:{$latestVersion}'
- 如果您需要
androidX
库的支持,请依赖implementation 'com.github.razerdp:BasePopup-compat-androidx:{$latestVersion}'
- 请注意,如果您依赖了androidX支持组件,请不要依赖另外两个支持组件,否则会冲突
- 如果您需要
- 现在BasePopup将会进行包的拆分,源工程仅针对没有任何依赖的原生Android进行适配,如果您需要别的适配,请分别依赖以下模块或多个模块:
- Bug fixed:
- Other:
- add 996 license
GravityPopupFrag | LocatePopupFrag |
---|---|
AnyPosPopupFrag | UpdatePopupFrag |
BlurSlideFromBottomPopupFrag | CommentPopup |
SlideFromBottomPopup | InputPopup |
ListPopup | MenuPopup |
支付宝 |
---|
因QQ没时间管理,因此解散,同时开通微信群,主要用于交流和BasePopup的反馈,为了保证微信群的质量,因此只有打赏了之后才能进群~
因近期发现无法回复付款方,因此如果您已经微信支付打赏并需要进群,请重新再扫一遍支付宝并支付,我会退款给您并联系您~
请查阅手册:常见问题