原标题:Android通用业务弹窗管理方案PopLayerV1
前言
在android圈里关于弹窗的开源框架还是挺多的,但是大多数扩展都是针对于样式,像是一种类型的弹窗开发者传入不同的参数就能在UI效果上显示不同的特效,这样的扩展的确是十分方便但在我们具体工作业务开发中,UI对弹窗样式的追求上就显得有些鸡肋,基本上业务场景每种类型的弹窗界面效果都大不相同做不到真正意义上的界面统一
这里对于将要介绍的方案 着重的不在于UI效果 而在于 弹窗的业务逻辑
思想理念
得益于markzhai的任务流概念将App初始化的流程抽象为flow、wave和task 三个阶段类别的想法
我整理了弹窗相关的一些类别 (ps:这里的弹窗不再是Dialog通常的概念)
publicenumPopType {
DIALOG,
WEBVIEW,
WIDGET,
POUPOWINDOW,
TOAST,
SNACKBAR,
OTHERS
}
我也尝试着将这些繁杂的弹窗统一抽象为一体 也就是本框架中的核心成员之一 —— PopLayerView
它是一个弹窗view但又不继承于View 并且具备原生弹窗show,hide等基本功能
它可以是上面列出的弹窗的任何一种 只需要传入你的具体弹窗策略
框架产于需求终于需求 需求文档里 可能需要你将弹窗延迟固定的时间并消失 一些活动弹窗需要你在具体的时间段失效 又或者是当运营下发多个活动窗口时 该如何满足他们需求的管理这些弹窗
面对上述的这些问题
弹窗就不限于弹窗本身了,它必须具备装配各种业务相匹配的能力
时间范围管理
显示弹窗次数管理
优先级设置
显示时间配置
Poplayer内部维护了 PopLaye