Skip to content

封装一个独立弹窗Module,这里的弹窗包括普通的Dialog方式弹框和WindowManager方式弹窗,主要是方便做项目重构,统一对弹窗进行管理,方便维护,拓展。如果你在对项目UI进行整体改版,需要对大量对话框和WindowManager弹窗进行UI适配的时候,此项目中的方法将非常适用

Notifications You must be signed in to change notification settings

PopFisher/SmartAlertPop

Repository files navigation

SmartAlertPop

    封装一个独立弹窗Module,这里的弹窗包括普通的Dialog方式弹框和WindowManager方式弹窗。提供一种管理项目里面弹窗的方案,便于后期修改和维护。首先描述一个在大项目中普遍存在的一个现象:

    由于项目的功能多,负责功能的人不同,当功能中需要一个普通的确定取消对话框时,大部分人都选择自己写了一个,自己new一个独立的弹窗出来。这样做的好处有以下几个:

  1. 代码逻辑独立,自己写的代码自己能控制
  2. 快速方便,便于修改,便于满足各种奇怪的需求

    可是这个做法导致项目中存在大量的代码冗余,大量的分散的弹窗,短期内一般也不会有什么问题,如果这个时候项目要重构,要修改所有弹窗的样式,接下来面临几个问题:

  1. 不知道有多少个弹窗
  2. 不知道代码中什么地方会有弹窗
  3. 不知道弹窗写法都有哪些(样式不知道,弹出的方式是Dialog还是WindowManager)
  4. 改动点多,工作量大,风险大

    项目重构就要把所有弹窗重新管理起来,方便维护和拓展,具体设计与实现细节见博客,下面是弹窗的样式:

动画演示

动画演示

弹窗样式截图

首页

homepage1 homepage2

对话框弹窗类型

type1 type2

type3 type4

type101 type103

type106

type102 type104

type105

type201

type202 type203

WindowManager弹窗类型

windowtype1

windowtype2

使用说明

    在自己的项目中导入CommonAlertPop Module,参考本案例中的使用方法即可,如下:

Dialog弹窗Type定义

types

Dialog弹窗使用

final ICommonDialog dialog = CommonDialogFactory.createDialogByType(this, DialogUtil.DIALOG_TYPE_1);
dialog.setTitleText("DIALOG_TYPE_1");
dialog.setCancelBtn(R.string.cancel, new View.OnClickListener() {
	@Override
	public void onClick(View v) {

	}
});
dialog.setOkBtn(R.string.ok, new View.OnClickListener() {
	@Override
	public void onClick(View v) {
		dialog.dismiss();
	}
});
dialog.setCanceledOnTouchOutside(true);
dialog.show();

WindowManager弹窗Type定义

windowtypes

WindowManager弹窗使用

final ICommonWindowPop windowPop = CommonWindowPopFactory.createWindowPopByType(this, WindowPopUtil.WINDOW_POP_TYPE_2);
windowPop.setTitleBgType(WindowPopUtil.TITLE_SAFE_BLUE);
windowPop.setTitleText("WINDOW_POP_TYPE_2");
windowPop.setContentView(R.layout.dialog_custom_content_test_layout);
windowPop.setCanceledOnTouchOutside(true);
windowPop.setCancelBtn(R.string.cancel, new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});
windowPop.setOkBtn(R.string.ok, new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        windowPop.dismiss();
    }
});
windowPop.show();

    具体实现细节参考博文地址:Android重构与设计之路,从整理提示对话框弹窗开始

    本项目只是提供一种基本的框架,具体的对话框样式可以根据自身项目的需求而改变,可以随意添加删除修改一种类型,主要是为了统一管理项目中的弹窗,方便维护与管理。

About

封装一个独立弹窗Module,这里的弹窗包括普通的Dialog方式弹框和WindowManager方式弹窗,主要是方便做项目重构,统一对弹窗进行管理,方便维护,拓展。如果你在对项目UI进行整体改版,需要对大量对话框和WindowManager弹窗进行UI适配的时候,此项目中的方法将非常适用

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages