android自定义dialog开源库,android-dialog: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...
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: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...相关推荐
- android 沉浸式开源库,Android沉浸式状态栏
关于Android沉浸式状态栏, 网上已经有很多开源库, 虽然开源库可以解决某些特定布局下的沉浸式状态栏问题, 但是遇到比较特殊的布局就无法解决了, 所以了解一下沉浸式状态栏如何实现是有必要的. 无论 ...
- android旋转动画开源库,android 围绕中心旋转动画
本文主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果 ...
- Android自定义类似ProgressDialog效果的Dialog
2019独角兽企业重金招聘Python工程师标准>>> Android自定义类似ProgressDialog效果的Dialog. 方法如下: 1.首先准备两张自己要定义成哪样子的效果 ...
- Android自定义底部带有动画的Dialog
Android自定义底部带有动画的Dialog 效果图 先看效果图,是不是你想要的呢 自定义Dialog package --.view;import android.app.Dialog; impo ...
- Android自定义底部弹出窗-dialog(2种实现分析+源码)
Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...
- Android 优秀的开源库
前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...
- Android常用热门开源库汇总(持续更新)
原文转载:https://www.yundashi168.com/344.html 请及时关注原文网站,因为后续持续更新都在原网站更新.请多多点赞和关注. 前言 收集了一些比较常见的开源库,特此记录( ...
- Android开发常用开源库
Android 开发常用开源库 一.网络请求 二.图片加载 三.数据库 四.通讯 五.注解 六.JSON解析 七.性能优化 八.性能优化之布局分析 九.工具类 十.状态栏 十一.扫码库 十二.播放器 ...
- 采用 bsdiff 开源库 Android 的增量更新,差分更新 服务器端客户端
Incremental-update-master 项目地址: ccj659/Incremental-update-master 简介:采用 bsdiff 开源库 Android 的增量更新,差分更新 ...
- Android 自带图标库 android.R.drawable
在xml文件中调用. android:title="@string/secure_connect" android:orderInCategory="100" ...
最新文章
- 360度看IT行业--3月12日西安工程大学讲座
- SVN服务器搭建--Subversio与TortoiseSVN的配置安装
- 不当免费技术支持的10种方法
- 试题 F: 特别数的和 第十届蓝桥杯
- 【深度学习】越来越卷,教你使用Python实现卷积神经网络(CNN)
- MPU和CPU有什么区别?
- 【SPSS】第十周-面板数据的线性回归
- 背景图层和普通图层的区别_新手如何在PS中创建图层?不容错过的7种方法,你值得学习...
- 网络切片技术缺点_一文读懂网络切片 - 技术综合版块 - 通信人家园 - Powered by C114...
- [转载]Linux Shell 的快捷键
- jidnserror.wo.com.cn:8080错误解决方法
- linux 中的快捷键
- 非线性光纤光学_片上光学频率梳:可产生光子微波,应用于卫星通信和5G网络!...
- 用PROC FCMP创建函数
- amd cpu排行_AMD R5系列处理器性能排名 CPU天梯图2017年4月最新完整版
- python bmp转jpg_python将bmp转换为jpg格式并删除原图的具体操作
- Lorenzo Von Matterhorn(暴力)(树)
- 如何设计并实现传统小区智能化
- 形式与政策部分开卷题目及答案
- c语言中cap捕捉函数,CAP理论的理解
热门文章
- 4.1.5 文件存储空间管理
- SQL语言之索引(Oracle)
- C语言不使用结构体实现链表,不用指针链表和结构体数组怎么编学生成绩管理系统啊...
- 【程序人生】这一年 —— 2020
- 禁止套娃!Redis官网宕机,返回“连接不上Redis”
- Android踩坑日记:使用Fesco图片加载库在GridView上的卡顿优化
- 【小练习02】CSS--网易产品
- python开发闹钟_「玩转树莓派」为女朋友打造一款智能语音闹钟
- 排个课表学会了拓扑排序!有点意思
- Dubbo入门(一)