一、前言:
功能强大,UI简洁,交互优雅的通用弹窗,可能是Android平台最好的弹窗库!可以替代Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner等组件!它有这样几个特点:
- 功能强大,内部封装了常用的弹窗,内置十几种良好的动画,将弹窗和动画的自定义设计的极其简单;目前还没有出现XPopup实现不了的弹窗效果。 内置弹窗允许你使用项目已有的布局,同时还能用上XPopup提供的动画,交互和逻辑封装。
- UI和动画简洁,遵循Material Design,在设计动画的时候考虑了很多细节,过渡,层级的变化;或者说是模拟系统组件的动画,具体可以从Demo中感受
- 交互优雅,实现了优雅的手势交互,智能的嵌套滚动,智能的输入法交互,具体看Demo
- 适配全面屏,目前适配了小米,华为,谷歌,OPPO,VIVO,三星,魅族,一加全系全面屏手机
- 自动监听Activity生命周期,自动释放资源。在Activity直接finish的场景也避免了内存泄漏
- 很好的易用性,所有的自定义弹窗只需继承对应的类,实现你的布局,然后像Activity那样,在
onCreate
方法写逻辑即可
- 性能优异,动画流畅;精心优化的动画,让你很难遇到卡顿场景
- 能在应用后台弹出(需要申请悬浮窗权限,一行代码即可)
- 支持androidx
- 完美支持RTL布局
- 如果你想要时间选择器和城市选择器,可以使用XPopup扩展功能库XPopupExt: https://github.com/li-xiaojun/XPopupExt
gitHub地址: https://github.com/li-xiaojun/XPopup/blob/master/app/build.gradle
1、设计思路:
设计思路: 综合常见的弹窗场景,我将其分为几类:
- Center类型,就是在中间弹出的弹窗,比如确认和取消弹窗,Loading弹窗
- Bottom类型,就是从页面底部弹出,比如从底部弹出的分享窗体,知乎的从底部弹出的评论列表,内部已经处理好手势拖拽和嵌套滚动
- Attach类型,就是弹窗的位置需要依附于某个View或者某个触摸点,就像系统的- - - PopupMenu效果一样,但PopupMenu的自定义性很差,淘宝的商品列表筛选的下拉弹窗,微信的朋友圈点赞弹窗都是这种。
- DrawerLayout类型,就是从窗体的坐边或者右边弹出,并支持手势拖拽;好处是与界面解耦,可以在任何界面显示DrawerLayout
- ImageViewer大图浏览类型,就像掘金那样的图片浏览弹窗,带有良好的拖拽交互体验,内部嵌入了改良的PhotoView
- 全屏弹窗,弹窗是全屏的,就像Activity那样,可以设置任意的动画器;适合用来实现登录,选择性的界面效果。
- Position自由定位弹窗,弹窗是自由的,你可放在屏幕左上角,右下角,或者任意地方,结合强大的动画器,可以实现各种效果。
2、 演示
3、快速体验
Gif录制的有些卡顿,真机预览效果更佳。扫描二维码下载Demo:
demo.png
如果二维码图片不可见,点我下载Demo体验
二、使用:
1、依赖
implementation 'com.lxj:xpopup:2.0.8'
必须添加的依赖库,版本号在26以及以上即可,版本不用和我一致:
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
2、使用文档
具体使用方法全在WIKI中,请查看下面各个章节:
3、 混淆
-dontwarn com.lxj.xpopup.widget.**
-keep class com.lxj.xpopup.widget.**{*;}