可能是Android最好的开源弹窗库,五十余家公司都在用
项目名称:XPopup
项目作者:李晓俊
开源许可协议:Apache-2.0
项目地址:https://gitee.com/lxj_gitee/XPopup
项目简介
XPopup 提供了 Android 开发中功能强大,交互优雅,动画丝滑的通用弹窗。可以替代Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner等组件,自带十几种效果良好的动画, 支持完全的UI和动画自定义。
项目特点
- 功能强大
内部封装了常用的弹窗,内置十几种良好的动画,将弹窗和动画的自定义设计的极其简单;目前还没有出现XPopup实现不了的弹窗效果。 内置弹窗允许你使用项目已有的布局,同时还能用上XPopup提供的动画,交互和逻辑封装。
- UI和动画简洁
遵循Material Design,在设计动画的时候考虑了很多细节,过渡,层级的变化;或者说是模拟系统组件的动画,具体可以从Demo中感受
- 交互优雅
实现了优雅的手势交互,智能的嵌套滚动,智能的输入法交互,具体看Demo
- 适配全面屏
目前适配了小米,华为,谷歌,OPPO,VIVO,三星,魅族,一加全系全面屏手机
- 自动监听Activity生命周期,自动释放资源。在Activity直接finish的场景也避免了内存泄漏
- 很好的易用性
所有的自定义弹窗只需继承对应的类,实现你的布局,然后像Activity那样,在onCreate方法写逻辑即可
- 性能优异,动画流畅;精心优化的动画,让你很难遇到卡顿场景
- 能在应用后台弹出(需要申请悬浮窗权限,一行代码即可)
- 支持androidx
- 完美支持RTL布局
设计思路
综合常见的弹窗场景,作者将其分为几类:
- Center类型,就是在中间弹出的弹窗,比如确认和取消弹窗,Loading弹窗
- Bottom类型,就是从页面底部弹出,比如从底部弹出的分享窗体,知乎的从底部弹出的评论列表,内部已经处理好手势拖拽和嵌套滚动
- Attach类型,就是弹窗的位置需要依附于某个View或者某个触摸点,就像系统的PopupMenu效果一样,但PopupMenu的自定义性很差,淘宝的商品列表筛选的下拉弹窗,微信的朋友圈点赞弹窗都是这种。
- DrawerLayout类型,就是从窗体的左边或者右边弹出,并支持手势拖拽;好处是与界面解耦,可以在任何界面显示DrawerLayout
- ImageViewer大图浏览类型,就像掘金那样的图片浏览弹窗,带有良好的拖拽交互体验,内部嵌入了改良的PhotoView
- 全屏弹窗,弹窗是全屏的,就像Activity那样,可以设置任意的动画器;适合用来实现登录,选择性的界面效果。
- Position*定位弹窗,弹窗是*的,你可放在屏幕左上角,右下角,或者任意地方,结合强大的动画器,可以实现各种效果。
部分组件效果演示
内置弹窗(支持复用已有布局)
自定义Bottom弹窗(天然支持嵌套滚动,多层弹窗)
自定义Attach弹窗(任意方向支持,灵活易用)
Drawer弹窗(手势拖拽,状态栏阴影)
ImageViewer大图浏览弹窗
如果你想查看更多效果预览或了解使用方法,那就点击后面的链接前往项目主页看看吧,别忘了给它一个 Star 哦:https://gitee.com/lxj_gitee/XPopup