Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

封装一个独立弹窗Module,这里的弹窗包括普通的Dialog方式弹框和WindowManager方式弹窗

Notifications You must be signed in to change notification settings

dayfan0810/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方式弹窗

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%

AltStyle によって変換されたページ (->オリジナル) /