android-dialog

此框架提供七种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。

LoadingDialog:正在加载对话框

MessageDialog:消息对话框,只有确定按钮

AlertDialog:确认对话框,有确认和取消按钮

ListDialog:普通选择、单选或者多选对话框

EditTextDialog:有一个editText和checkbox的对话框

ProgressDialog:一个可以显示具体进度的对话框

BottomSheetDialog:一个在底部弹出的对话框

支持扩展的ContentViewDialog

gradle配置方式

compile 'cn.yhq:android-dialog:1.6.0'

使用方法

创建对话框的方式有两种:

1、使用DialogBuilder直接创建,这种方式创建的对话框不会保存状态,即当屏幕旋转等导致的activity重建,对话框会消失。

显示一个正在加载的对话框

DialogBuilder.loadingDialog(this).show();

显示一个进度对话框

这个地方需要注意的是需要设置一个ProgressHandler,用于主动更新对话框的进度:

DialogBuilder.ProgressHandler progressHandler =

new DialogBuilder.ProgressHandler();

DialogBuilder.progressDialog(MainActivity.this).progressHandler(progressHandler).show();

// 更新进度

progressHandler.setProgress(progress);

显示一个消息对话框

DialogBuilder.messageDialog(MainActivity.this).setMessage("消息对话框").show();

显示一个确认对话框

DialogBuilder.alertDialog(MainActivity.this).setMessage(args.getString("message"))

.setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "点击了确认按钮", Toast.LENGTH_LONG).show();

}

}).create();

显示一个普通选择对话框

DialogBuilder.listDialog(MainActivity.this).setChoiceItems(list)

.setChoiceType(DialogBuilder.TYPE_CHOICE_NORMAL)

.setOnChoiceListener(new DialogBuilder.OnChoiceListener() {

// 对话框关闭后回调的一个方法,返回选择的条目

@Override

public void onChoiceItem(Object item) {

Toast.makeText(MainActivity.this, "最终选择了:" + item, Toast.LENGTH_LONG).show();

}

}).setOnChoiceClickListener(new DialogInterface.OnClickListener() {

// 点击条目后回调的一个方法

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "点击了第" + (which + 1) + "个条目",

Toast.LENGTH_LONG).show();

}

}).show();

显示一个单选对话框

DialogBuilder.listDialog(MainActivity.this).setChoiceItems(list)

.setChoiceType(DialogBuilder.TYPE_CHOICE_SINGLE)

.setOnChoiceListener(new DialogBuilder.OnChoiceListener() {

// 对话框关闭后回调的一个方法,返回选择的条目

@Override

public void onChoiceItem(Object item) {

Toast.makeText(MainActivity.this, "最终选择了:" + item, Toast.LENGTH_LONG).show();

}

}).setOnChoiceClickListener(new DialogInterface.OnClickListener() {

// 选择某一个条目的时候回调的一个方法,返回选择的是哪一个条目

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "点击了第" + (which + 1) + "个条目",

Toast.LENGTH_LONG).show();

}

}).setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "点击了确定按钮", Toast.LENGTH_LONG).show();

}

}).show();

显示一个多选对话框

// 已经选好的条目

int[] checkedItems = {1, 3, 4};

DialogBuilder.listDialog(MainActivity.this)

.setChoiceType(DialogBuilder.TYPE_CHOICE_MULTI).setChoiceItems(list)

.setCheckedItems(checkedItems)

.setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "点击了确定按钮", Toast.LENGTH_LONG).show();

}

}).setOnMultiChoiceClickListener(new DialogInterface.OnMultiChoiceClickListener() {

// 选择或者取消选择某一个条目的时候回调的一个方法,返回某一个条目的选择情况

@Override

public void onClick(DialogInterface dialog, int which, boolean isChecked) {

Toast.makeText(MainActivity.this,

(isChecked ? "选择" : "取消选择") + "了第" + (which + 1) + "个条目", Toast.LENGTH_LONG)

.show();

}

}).setOnMultiChoiceListener(new DialogBuilder.OnMultiChoiceListener() {

// 对话框关闭后回调的一个方法,返回选择的条目

@Override

public void onMultiChoiceItems(Object[] items) {

Toast.makeText(MainActivity.this, "最终选择了:" + Arrays.toString(items),

Toast.LENGTH_LONG).show();

}

}).show();

显示一个文本输入对话框

DialogBuilder.editTextDialog(MainActivity.this)

.setOnEditTextDialogListener(new DialogBuilder.OnEditTextDialogListener() {

@Override

public void onEditTextCreated(EditText editText, CheckBox checkbox) {

editText.setHint("请输入文本内容");

checkbox.setVisibility(View.VISIBLE);

checkbox.setText("checkbox文本");

}

@Override

public boolean onEditTextSelected(EditText editText, String text,

CheckBox checkbox, boolean checked) {

Toast.makeText(MainActivity.this, editText.getText().toString(),

Toast.LENGTH_LONG).show();

return false;

}

}).show();

显示一个BottomSheet对话框

View sheetView = View.inflate(MainActivity.this, android.R.layout.simple_list_item_1, null);

TextView sheetViewTextView = (TextView) sheetView.findViewById(android.R.id.text1);

sheetViewTextView.setText("自定义视图");

DialogBuilder.bottomSheetDialog(MainActivity.this).setContentView(sheetView).show();

显示一个自定义对话框

View customView =

View.inflate(MainActivity.this, android.R.layout.simple_list_item_1, null);

TextView textView = (TextView) customView.findViewById(android.R.id.text1);

textView.setText("自定义视图");

DialogBuilder.otherDialog(MainActivity.this).setContentView(customView).show();

2、使用DialogManager,配合IDialogCreator接口创建的对话框,这种方式创建的对话框会保存状态,在屏幕旋转后对话框不会消失。

DialogManager dialogManager = new DialogManager(this);

Bundle args = new Bundle();

args.putString("message", "确认对话框");

dialogManager.showDialog(1, args);

@Override

public IDialog createDialog(int id, Bundle args) {

switch (id) {

case 1:

// 这里返回的就是按照普通方式创建的对话框

return DialogBuilder.alertDialog(this).setMessage(args.getString("message"))

.setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "点击了确认按钮", Toast.LENGTH_LONG).show();

}

}).create();

}

return null;

}

3、当使用第二种方式的时候,你可以在你的Activity基类里面实现IDialogCreator接口,并提供DialogManager的封装方法,这样在你的Activity子类里面重写IDialogCreator接口方法后,直接调用显示对话框的方法showDialogFragment就可以直接显示对话框了。具体可以参考BaseActivity与BaseFragment。

public class BaseActivity extends AppCompatActivity implements IDialogCreator {

private DialogManager dialogManager;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

dialogManager = new DialogManager(this);

}

public void showDialogFragment(int id) {

dialogManager.showDialog(id);

}

public void showDialogFragment(int id, Bundle bundle) {

dialogManager.showDialog(id, bundle);

}

@Override

public IDialog createDialog(int id, Bundle args) {

return null;

}

}

android自定义dialog开源库,android-dialog: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...相关推荐

  1. android 沉浸式开源库,Android沉浸式状态栏

    关于Android沉浸式状态栏, 网上已经有很多开源库, 虽然开源库可以解决某些特定布局下的沉浸式状态栏问题, 但是遇到比较特殊的布局就无法解决了, 所以了解一下沉浸式状态栏如何实现是有必要的. 无论 ...

  2. android旋转动画开源库,android 围绕中心旋转动画

    本文主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果 ...

  3. Android自定义类似ProgressDialog效果的Dialog

    2019独角兽企业重金招聘Python工程师标准>>> Android自定义类似ProgressDialog效果的Dialog. 方法如下: 1.首先准备两张自己要定义成哪样子的效果 ...

  4. Android自定义底部带有动画的Dialog

    Android自定义底部带有动画的Dialog 效果图 先看效果图,是不是你想要的呢 自定义Dialog package --.view;import android.app.Dialog; impo ...

  5. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

  6. Android 优秀的开源库

    前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...

  7. Android常用热门开源库汇总(持续更新)

    原文转载:https://www.yundashi168.com/344.html 请及时关注原文网站,因为后续持续更新都在原网站更新.请多多点赞和关注. 前言 收集了一些比较常见的开源库,特此记录( ...

  8. Android开发常用开源库

    Android 开发常用开源库 一.网络请求 二.图片加载 三.数据库 四.通讯 五.注解 六.JSON解析 七.性能优化 八.性能优化之布局分析 九.工具类 十.状态栏 十一.扫码库 十二.播放器 ...

  9. 采用 bsdiff 开源库 Android 的增量更新,差分更新 服务器端客户端

    Incremental-update-master 项目地址: ccj659/Incremental-update-master 简介:采用 bsdiff 开源库 Android 的增量更新,差分更新 ...

  10. Android 自带图标库 android.R.drawable

    在xml文件中调用. android:title="@string/secure_connect" android:orderInCategory="100" ...

最新文章

  1. 360度看IT行业--3月12日西安工程大学讲座
  2. SVN服务器搭建--Subversio与TortoiseSVN的配置安装
  3. 不当免费技术支持的10种方法
  4. 试题 F: 特别数的和 第十届蓝桥杯
  5. 【深度学习】越来越卷,教你使用Python实现卷积神经网络(CNN)
  6. MPU和CPU有什么区别?
  7. 【SPSS】第十周-面板数据的线性回归
  8. 背景图层和普通图层的区别_新手如何在PS中创建图层?不容错过的7种方法,你值得学习...
  9. 网络切片技术缺点_一文读懂网络切片 - 技术综合版块 - 通信人家园 - Powered by C114...
  10. [转载]Linux Shell 的快捷键
  11. jidnserror.wo.com.cn:8080错误解决方法
  12. linux 中的快捷键
  13. 非线性光纤光学_片上光学频率梳:可产生光子微波,应用于卫星通信和5G网络!...
  14. 用PROC FCMP创建函数
  15. amd cpu排行_AMD R5系列处理器性能排名 CPU天梯图2017年4月最新完整版
  16. python bmp转jpg_python将bmp转换为jpg格式并删除原图的具体操作
  17. Lorenzo Von Matterhorn(暴力)(树)
  18. 如何设计并实现传统小区智能化
  19. 形式与政策部分开卷题目及答案
  20. c语言中cap捕捉函数,CAP理论的理解

热门文章

  1. 4.1.5 文件存储空间管理
  2. SQL语言之索引(Oracle)
  3. C语言不使用结构体实现链表,不用指针链表和结构体数组怎么编学生成绩管理系统啊...
  4. 【程序人生】这一年 —— 2020
  5. 禁止套娃!Redis官网宕机,返回“连接不上Redis”
  6. Android踩坑日记:使用Fesco图片加载库在GridView上的卡顿优化
  7. 【小练习02】CSS--网易产品
  8. python开发闹钟_「玩转树莓派」为女朋友打造一款智能语音闹钟
  9. 排个课表学会了拓扑排序!有点意思
  10. Dubbo入门(一)