# BasePopup **Repository Path**: twp/BasePopup ## Basic Information - **Project Name**: BasePopup - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-11-03 - **Last Updated**: 2024-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **中文** | [**English**](./README_V2_EN.md)

Logo图片似乎加载不出来

BasePopup - Android下打造通用便捷的PopupWindow

Release Candy License Api Author


--- ### 有奖调查问卷: ### 导航 - [特性](#特性) - [注意事项](#注意事项) - [环境依赖](#环境依赖) - [文档](#文档) - [BasePopup手册](https://www.yuque.com/razerdp/basepopup) - [更新日志](#更新日志-历史更新) - [历史更新](https://www.yuque.com/razerdp/basepopup/uyrsxx) - [例子预览](#例子预览) - [**apk体验下载(密码123)**](https://www.pgyer.com/basepopup) - [打赏](#打赏看在我那么努力维护的份上给个零食呗) - [交流群](#交流群) - [常见问题](#常见问题) - [LICENSE](#license)
### 特性 - 本库作为基类,对您的实现没有任何干预,再也不需要担心实现某些方法的时候被Api限制了 - 无需头疼如何计算offset来进行位置控制,只需要简简单单的设置[**Gravity**](https://www.yuque.com/razerdp/basepopup/qnu3qd)便能随心所欲的控制您的Popup - 无论是[**Animation**](https://www.yuque.com/razerdp/basepopup/mg3bcw#onCreateShowAnimation)还是[**Animator**](https://www.yuque.com/razerdp/basepopup/mg3bcw#onCreateShowAnimator),只需要跟您平时一样写动画,就可以完成Popup的动效设计了,不需要xml不需要关心别的兼容性问题 - 背景与主体分离,无论是[**背景模糊**](https://www.yuque.com/razerdp/basepopup/udccdq#12bedc89),亦或是[**背景颜色**](https://www.yuque.com/razerdp/basepopup/gscx3g#aiRz7),甚至[**把背景换成您的View**](https://www.yuque.com/razerdp/basepopup/gscx3g#e96cp),都可以通过简单的设置完成,主体与背景隔离,不用担心事件的问题 - 还在为Popup的触摸事件头疼吗?BasePopup帮你解决烦恼~返回键控制、外部点击透传、点击外部是否消失都只需要您动动手指头完成配置即可 - PopupWindow自动锚定AnchorView,滑动到屏幕外自动跟随AnchorView消失,不需要复杂的逻辑设置,只需要通过[**linkTo**](https://www.yuque.com/razerdp/basepopup/api)方法告诉BasePopup即可帮您完成 - 简单的PopupWindow不想新建一个类,希望拥有链式调用?没问题,[**QuickPopupBuilder**](https://www.yuque.com/razerdp/basepopup/ob329t)为此而生,相信你会越用越爱~
### 注意事项 - **请务必仔细阅读本README,每个版本升级请务必查阅更新日志,这可以为您减少不必要弯路** - **2.2.2版本开始不再支持Support,建议您尽快升级到AndroidX** - **请注意引用版本的问题,Release版本是稳定版,Candy是预览版。** - Release版本:一般在Candy版本反复验证修复后发布到Release,如果您对稳定性要求较高,请使用Release版本。 - Candy版本:一般新功能、issue修复都会发布到Candy版本,Candy版本发布比较频繁,但通常会拥有新的功能,如果您喜欢试验新功能同时对稳定性要求不高,请使用Candy版本。 - **Release和Candy两个版本互相切换可能会导致Build失败,这时候您Clean一下Project即可** - 从16年[**第一次**](https://github.com/razerdp/BasePopup/commit/c92b7088270d5757269d9b79213627a4a0392d31)提交到现在,本人技术也一直在进步,BasePopup也会一直迭代更新,所以,请谨慎选择版本哦~一不小心就颠覆了之前的实现。
### 环境依赖 请把下述 **{$latestVersion}** 替换为上面表格中对应的版本。 **自2.2.2版本开始,BasePopup将完全迁移至AndroidX,不再提供扩展组件了**,BasePopup建议您尽早迁移到AndroidX - **Release:** `implementation 'com.github.razerdp:BasePopup:{$latestVersion}'` - **Candy:** `implementation 'com.github.razerdp:BasePopup_Candy:{$latestVersion}'`
### 文档 BasePopup配备完善的文档,建议您优先查阅文档。 [**BasePopup手册**](https://www.yuque.com/razerdp/basepopup)
### 更新日志 [(历史更新)](https://www.yuque.com/razerdp/basepopup/uyrsxx) **正在开发日志(Candy版本)请查看dev分支:** [**branch-dev**](https://github.com/razerdp/BasePopup/tree/dev) * **【Release】2.2.9**(2020/10/10) * 2.2.9主要更新内容:部分优化及回调增加 * 【新增方法】 * 增加方法:`onBeforeDismiss`,作用同OnDismissListener#onBeforeDismiss() * 增加方法:`setTouchable`,该方法用于设置是否允Popup是否响应事件,如果不响应,则事件会穿透Popup * 增加键盘对齐View的方法 `setAdjustInputMode(View,flag)` [#358](https://github.com/razerdp/BasePopup/issues/358) * 增加方法:`preMeasure()`,预测量contentView,该方法将会进行measure,但是不能保证能够准确测量(如recyclerview未设置adapter时) * 增加方法:`getPreMeasureWidth()`,获取预测量后的宽度 * 增加方法:`getPreMeasureHeight()`,获取预测量后的高度 * 增加方法:`updateKeyboardAlign()`,该方法允许您手动通知BasePopup根据键盘对齐模式对齐键盘 * 增加回调:`onWindowFocusChanged`回调 * BasePopupUnsafe增加方法: * `getWindowManager`:获取BasePopup的WindowManager代理 * `getBasePopupDecorViewProxy`:获取BasePopup最终的DecorView代理 * `getDecorViewLayoutParams`:获取BasePopup最终DecorView的LayoutParams * 【功能优化】 * 方法更名:`onPreShow`-> `onBeforeShow` * 优化onBeforeDismiss()判断顺序 [#352](https://github.com/razerdp/BasePopup/issues/352) * 去除init时预测量的方法,该方法是历史遗留下来的,用于定位用,现在定位都已经代理到View里面了,因此该方法被弃用 * 但不排除部分用户需要这个,因此保留并改为允许用户触发 * 方法修改: * `getWidth()`,只能在PopupWindow显示后才能正确获取宽度 * `getHeight()`,只能在PopupWindow显示后才能正确获取高度
### 例子预览
#### 更多例子请下载Demo:[**apk体验下载(密码123)**](https://www.pgyer.com/basepopup)
| | | | | - | - | - | | ![](https://github.com/razerdp/Pics/blob/master/BasePopup/demo_1.gif) | ![](https://github.com/razerdp/Pics/blob/master/BasePopup/new_demo_2.gif) | ![](https://github.com/razerdp/Pics/blob/master/BasePopup/demo_3.gif) | | ![](https://github.com/razerdp/Pics/blob/master/BasePopup/demo_4.gif) | ![](https://github.com/razerdp/Pics/blob/master/BasePopup/demo_5.gif) | ![](https://github.com/razerdp/Pics/blob/master/BasePopup/demo_6.gif) |
### 打赏(看在我那么努力维护的份上。。。给个零食呗~) Logo图片似乎加载不出来
### 交流群 因公司不能登录QQ,因此解散原QQ群。 同时开通微信群,主要用于交流和BasePopup的反馈,为了保证微信群的质量(主要是远离斗图党和广告党),因此只有打赏了之后才能进群~ 【**打赏后请加微信小号:razerdp_test,并注明付款账号,定期核验后会通过**】
### 常见问题 请查阅[**手册:常见问题**](https://www.yuque.com/razerdp/basepopup/dgf6ry)
### License [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Frazerdp%2FBasePopup.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Frazerdp%2FBasePopup?ref=badge_large) [Apache-2.0](./LICENSE)

Visit Count(from 2020/08/19)