一个通用的Android端弹窗管理框架,支持带网络请求的业务流程管理,内部维护弹窗优先级队列 具备弹窗管理扩展功能 整合Dialog,PoupoWindow,悬浮Widget,透明Webview,Toast,SnackBar,无需再为繁琐的业务弹窗逻辑所困扰
只需要两行代码轻松接入
//add this to your repositories
maven { url 'https://www.jitpack.io' }
//add this to your dependencies
implementation 'com.github.MrCodeSniper:PopLayer:3.0.2'
//Dialog布局形式
PopLayerView mLayerView = new PopLayerView(this,R.layout.common_dialog_upgrade_app);
//自定义Dialog形式
NoticePopDialog hrzNoticePopDialog = new NoticePopDialog(this);
PopLayerView mLayerView = new PopLayerView(this,hrzNoticePopDialog);
//透明Webview形式
PopLayerView mLayerView = new PopLayerView(this,LayerConfig.redPocketScheme);
//取得对应的弹窗实体
PopLayerView<Dialog> mLayerView = new PopLayerView(this,R.layout.common_popview_frame2);
Dialog mView=mLayerView.getView().getPoupo();
PopLayerView<WebView> mLayerView = new PopLayerView(this,LayerConfig.redPocketScheme);
WebView mView=mLayerView.getView().getPoupo();
//想要拿到弹窗布局里的具体控件?就跟系统API一样简单!
TextView xxxTV = (TextView) mLayerView.findViewById(R.id.tv);
Popi.getBuilder()
.setmPopId(4)//弹窗的唯一标识 当id发生改变 视为新的弹窗
.setmPriority(2)//优先级这里不具体划分对应的范围 值越小优先级越高
.setmCancelType(TRIGGER_CANCEL)//弹窗消失的类型分为 TRIGGER_CANCEL(触摸消失) COUNTDOWN_CANCEL (延时消失)
.setMaxShowTimeLength(5)//最长显示时间(S)
.setMaxShowCount(5)//最大显示次数
.setmBeginDate(1548858028)//秒级时间撮开始时间 2019-01-30 22:20:28
.setmEndDate(1548944428)//秒级时间撮结束时间 2019-01-31 22:20:28
.setLayerView(mLayerView)//弹窗View
.build()
.pushToQueue() //纳入弹窗管理
.show();//开始显示弹窗
//添加任务
Task taskUpdate=new Task();
taskUpdate.setmPriority(1);
taskUpdate.setmTaskId(1);
//任务管理器添加任务及对应的弹窗
TaskManager.getInstance(this)
.pushToQueue(taskUpdate,mUpgradePopi)
.pushToQueue(taskDownload,downloadPop)
.pushToQueue(taskNotice,noticePopi);
//显示逻辑
TaskManager.getInstance(this).onTaskGoOn(taskUpdate);//回调成功
TaskManager.getInstance(this).onTaskInterupt(taskUpdate);//回调失败
//或
//如果您使用的是Rxjava实现回调您可以继承框架中自带回调逻辑的PopRxSubscriber
public class MySubscriber extends PopRxSubscriber {
public MySubscriber(Context mContext, Task task) {
super(mContext, task);
}
}
逐步统一 其他类型的弹窗 提供给一个较为全面的应对业务需求的弹窗管理框架
版本号 | LOG | 进度更新 |
---|---|---|
V1.0.0 | 项目开源,完成弹窗管理与Dialog形式扩展 | Dialog策略扩展完成 |
V1.0.1 | 修复Dialog策略无法获取dialog实体bug | Dialog策略优化 |
V1.0.2 | 修复activity摧毁造成的弹窗异常 bug | Dialog策略优化 |
V1.0.3 | 优化了弹窗的使用更加方便快捷 | 框架使用优化 |
版本号 | LOG | 进度更新 |
---|---|---|
V2.0.0 | 正式加入透明Webview弹窗策略扩展 | 透明Webview策略扩展完成 |
版本号 | LOG | 进度更新 |
---|---|---|
V3.0.0 | 引入流程任务管理模块 | 解决涉及网络的业务逻辑弹窗 |
V3.0.0~V3.0.2 | 优化回调优化职责分离 | 全网最新最全DEMO |
目前该项目已经稳定运行在本人的线上项目中,当需要扩展或者修改的地方会及时发版更新,有问题也可以直接提ISSUE给我 看到马上回复
如果您对本项目感兴趣您可以去掘金观看我的文章 给予一点小小的支持
Hello 我叫CodeSniper,如果您喜欢这个项目 请给个Star这对我真的非常重要!!!
Copyright (c) 2019 ChenHong
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.