XPopup

Project Url: li-xiaojun/XPopup
Introduction: 🔥功能强大,UI 简洁,交互优雅的通用弹窗!可以替代 Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner 等组件,自带十几种效果良好的动画, 支持完全的 UI 和动画自定义!(Powerful and Beautiful Popup,can absolutely replace Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner. With built-in animators , very easy to custom Popup View.)
More: Author   ReportBugs   
Tags:

中文 | English

功能强大,UI 简洁,交互优雅的通用弹窗!可以替代 Dialog,PopupWindow,PopupMenu,BottomSheet,DrawerLayout,Spinner 等组件,自带十几种效果良好的动画, 支持完全的 UI 和动画自定义!它有这样几个特点:

  1. 功能强大,内部封装了常用的弹窗,内置十几种良好的动画,将弹窗和动画的自定义设计的极其简单;目前还没有出现 XPopup 实现不了的弹窗效果
  2. UI 和动画简洁,遵循 Material Design,在设计动画的时候考虑了很多细节,过渡,层级的变化;或者说是模拟系统组件的动画,具体可以从 Demo 中感受
  3. 交互优雅,实现了优雅的手势交互以及智能的嵌套滚动,具体看 Demo
  4. 适配全面屏,目前适配了小米,华为,谷歌,OPPO,VIVO,三星,魅族,一加全系全面屏手机
  5. 通用性,项目需求复杂多变,产品经理天马行空,虽然很难做到 UI 的通用,但是你可以看到交互和动画完全可以通用;至于弹窗的 UI 和逻辑可能需要你自定义
  6. 易用性,所有的自定义弹窗只需继承对应的类,实现你的布局,然后在onCreate方法写逻辑即可

编写本库的初衷有以下几点

  1. 项目有这样常见需求:中间和底部弹出甚至可拖拽的对话框,指定位置的 PopupMenu 或者 PopupWindow,指定区域阴影的弹出层效果
  2. 市面上已有的类库要么功能不足够,要么交互效果不完美,有着普遍的缺点,就像 BottomSheet 存在的问题一样。比如:窗体消失的动画和背景渐变动画不一致,窗体消失后半透明背景仍然停留一会儿

设计思路: 综合常见的弹窗场景,我将其分为几类:

  1. Center 类型,就是在中间弹出的弹窗,比如确认和取消弹窗,Loading 弹窗
  2. Bottom 类型,就是从页面底部弹出,比如从底部弹出的分享窗体,知乎的从底部弹出的评论列表,我内部会处理好手势拖拽和嵌套滚动
  3. Attach 类型,就是弹窗的位置需要依附于某个 View 或者某个触摸点,就像系统的 PopupMenu 效果一样,但 PopupMenu 的自定义性很差,淘宝的商品列表筛选的下拉弹窗也属于这种,微信的朋友圈点赞弹窗也是这种。
  4. DrawerLayout 类型,就是从窗体的坐边或者右边弹出,并支持手势拖拽;好处是与界面解耦,可以在任何界面显示 DrawerLayout
  5. 大图浏览类型,就像掘金那样的图片浏览弹窗,带有良好的拖拽交互体验,内部嵌入了改良的 PhotoView
  6. 全屏弹窗,弹窗是全屏的,就像 Activity 那样,可以设置任意的动画器;适合用来实现登录,选择性的界面效果。

ScreenShot

快速体验

扫描二维码下载 Demo:

如果二维码图片不可见,点我下载 Demo 体验

Gradle

首先需要添加 Gradle 依赖:

implementation 'com.lxj:xpopup:1.7.10'
//for androidx.
implementation 'com.lxj:xpopup:1.7.10-x'

必须添加的依赖库:

//版本号在 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'

WIKI

具体使用方法全在 WIKI 中,请查看下面各个章节:

混淆

-dontwarn com.lxj.xpopup.widget.**
-keep class com.lxj.xpopup.widget.**{*;}

谁在用 XPopup

我本人很希望您能点击这里附上使用这个库的 App 名或者公司名,这样会给我更大的动力和热情去维护这个类库。

根据热心朋友提供的信息,目前使用 XPopup 的产品和公司有:

打个赏

如果你觉得我帮助到了你,节省了你的时间,可以对我进行打赏(打赏时可以附上自己的大名和 Github 地址),金额随意,以表支持。打赏名单

联系方式

XPopup 交流群:783659607

Gmail: lxj16167479@gmail.com

QQ Email: 16167479@qq.com

QQ: 16167479

Licenses

 Copyright 2019 li-xiaojun

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea