CustomDialog——一个多功能、通用、可自定义的Dialog
CustomDialog——一个多功能、通用、可自定义的Dialog
依赖
compile 'com.github.SiberiaDante:CustomDialog:v1.0.1'
说明
[CustomDialog]
一、一个万能的通用支持多功能的Dialog,简单三步即可实现:
1.只需要传入自定义的CustomDialog布局和需要设置点击事件的控件的id即可
CustomDialog customDialog=new CustomDialog(this,
R.layout.dialog_layout,
new int[]{R.id.dialog_sure});
2.CustomDialog按钮的监听
customDialog.setOnDialogItemClickListener(new CustomDialog.OnCustomDialogItemClickListener() {
@Override
public void OnCustomDialogItemClick(CustomDialog dialog, View view) {
switsh(view.getId()){
case:R.id.dialog_sure:
Toast.makeText(MainActivity.this, "确定按钮被点击了", Toast.LENGTH_LONG).show();
break;
}
}
});
3.CustomDialog显示与隐藏
customDialog.show(); customDialog.dismiss();
二、如果你想改变CustomDialog的显示位置、动画、控制按钮点击是否取消显示CustomDialog,可以使用以下构造
1.改变CustomDialog动画
/**
* @param context
* @param layoutResID 自己定义的布局
* @param listenedItems 需要设置点击事件的资源id
* @param animationResId dialog 动画,如果不使用自己的,则传0
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, int animationResId) {
super(context, R.style.Custom_Dialog_Style); //dialog的样式
this.context = context;
this.mLayoutResId = layoutResID;
this.mListenedItems = listenedItems;
this.mAnimationResId = animationResId;
}
2. 控制点击CustomDialog后是否自动取消显示CustomDialog
/**
* @param context
* @param layoutResID 自己定义的布局
* @param listenedItems 需要设置点击事件的资源id
* @param isDismiss 按钮点击后是否默认取消dialog {@code true}取消 {@code false} 不取消
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, boolean isDismiss) {
super(context, R.style.Custom_Dialog_Style); //dialog的样式
this.context = context;
this.mLayoutResId = layoutResID;
this.mListenedItems = listenedItems;
this.mIsDismiss = isDismiss;
}
3.改变CustomDialog的显示位置,同时可以控制点击CustomDialog后是否自动取消显示CustomDialog
/**
* @param context
* @param layoutResID 自己定义的布局
* @param listenedItems 需要设置点击事件的资源id
* @param isDismiss 按钮点击后是否默认取消dialog {@code true}取消 {@code false} 不取消
* @param position dialog 显示位置,默认CENTER,不设置时可以传0
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, boolean isDismiss, int position) {
super(context, R.style.Custom_Dialog_Style); //dialog的样式
this.context = context;
this.mLayoutResId = layoutResID;
this.mListenedItems = listenedItems;
this.mPosition = position;
}
4.可以同时改变CustomDialog动画、显示位置、按钮点击是否取消显示CustomDialog
/**
* 满足你各种需求
*
* @param context
* @param layoutResID 自己定义的布局
* @param listenedItems 需要设置点击事件的资源id
* @param animationResId dialog 动画,如果不使用自己的,则传0
* @param isDismiss 按钮点击后是否默认取消dialog {@code true}取消 {@code false} 不取消
* @param position dialog 显示位置,默认CENTER,不设置时可以传0
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, int animationResId, boolean isDismiss, int position) {
super(context, R.style.Custom_Dialog_Style); //dialog的样式
this.context = context;
this.mLayoutResId = layoutResID;
this.mListenedItems = listenedItems;
this.mAnimationResId = animationResId;
this.mIsDismiss = isDismiss;
this.mPosition = position;
}
其他几个常用Dialog,可以直接拿来用,不需要单独写布局
1.[EnsureDialog]:确认Dialog
EnsureDialog ensureDialog = new EnsureDialog(this).builder()
.setGravity(Gravity.CENTER)//默认居中,可以不设置
.setTitle("这里是一个标题", getResources().getColor(R.color.black))//可以不设置标题颜色,默认系统颜色
.setCancelable(false)
.setSubTitle("这是一个副标题")
.setIncon(R.mipmap.tip_icon)//不设置图标,默认没有图标
.setNegativeButton("取消", new View.OnClickListener() {//可以选择设置颜色和不设置颜色两个方法
@Override
public void onClick(View view) { }
})
.setPositiveButton("确认", getResources().getColor(R.color.red), new View.OnClickListener() {//可以选择设置颜色和不设置颜色两个方法
@Override
public void onClick(View view) {
ensureDialog.dismiss(); }
}); ensureDialog.show();
2.[BottomPopupWindow]:仿IOS底部弹窗Dialog
new BottomPopupWindow(this).builder()
.setTitle("选择").setCancelable(false).setCanceled(true)
.addSheetItem("相机", BottomPopupWindow.SheetItemColor.Blue, new BottomPopupWindow.OnSheetItemClickListener() {
@Override
public void onClick(int which) {
}
})
...//可以addSheetItem多个item
.addSheetItem("相册", BottomPopupWindow.SheetItemColor.Blue, new BottomPopupWindow.OnSheetItemClickListener() {
@Override
public void onClick(int which) {
}
}).show();
*[EditDialog]:带EditText确认Dialog
final EditDialog dialog = new EditDialog(this).builder();
dialog.setTitle("可编辑Dialog");
dialog.setCancelable(false);
dialog.setNegativeButton("取消", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
dialog.setPositiveButton("确定", new View.OnClickListener() {
@Override
public void onClick(View view) {
final String msg = dialog.getMsg();
Toast.makeText(MainActivity.this, "输入内容为:" + msg, Toast.LENGTH_LONG).show();
dialog.dismiss();
}
});
dialog.show();
堆码不易,star支持,万分感谢
欢迎关注:
Github 地址:https://github.com/SiberiaDante/CustomDialog
[TitleLayout——一个轻松实现标题栏的]
[Android开发必备经典收藏集(整理中)]
[Android开发常备工具整理中]
CustomDialog——一个多功能、通用、可自定义的Dialog的更多相关文章
- 一个漂亮而强大的自定义view
代码地址如下:http://www.demodashi.com/demo/13502.html 简介 主要提供一个漂亮而强大的自定义SeekBar,进度变化由提示牌 (sign)展示,具有强大的属性设 ...
- 一个简单的通用Makefile实现
一个简单的通用Makefile实现 Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新ma ...
- YII框架开发一个项目的通用目录结构
YII框架开发一个项目的通用目录结构: 3 testdrive/ 4 index.php Web 应用入口脚本文件 5 assets/ 包含公开的资源文件 6 css/ 包含 CSS 文件 7 ima ...
- 一个方便且通用的导出数据到 Excel 的类库
一个方便且通用的导出数据到 Excel 的类库 起源: 之前在做一个项目时,客户提出了许多的导出数据的需求: 导出用户信息 导出业务实体信息 各种查询都要能导出 导出的数据要和界面上看到的一致 可以分 ...
- Office365开发系列——开发一个全功能的Word Add-In
2016年10月我参加了在北京举行的DevDays Asia 2016 - Office 365应用开发”48小时黑客马拉松“,我开发的一个Word Add-In Demo——WordTemplate ...
- Android自定义view(一):制作一个最最最简单的自定义view
转载:https://blog.csdn.net/wsyizmao/article/details/78491422 浅谈安卓自定义view(一):制作一个最最最简单的自定义view 对于安卓程序员来 ...
- 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建
一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...
- Android开发之清除缓存功能实现方法,可以集成在自己的app中,增加一个新功能。
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 Android开发之清除缓存功能实现方法,可以集成在自己的app中,增加一个新功能. 下面是一个效果图 ...
- OpenResty 是一个全功能的 Web 应用服务器
OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过众多进行良好设计的 ...
随机推荐
- OpenCV学习笔记:resize函数改变图像的大小
OpenCV提供了resize函数来改变图像的大小,函数原型如下: , , int interpolation=INTER_LINEAR ); 参数解释: src:输入,原图像,即待改变大小的图像: ...
- How to customize the console applicaton
下面是如何最大化console和改变其显示的字体颜色的代码,顺便包含了计时代码(帮助做性能分析): class Program { [DllImport("kernel32.dll" ...
- SpringMVC入门--编写一个SpringMVC小程序
一.SpringMVC的优势 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一.Spring3.0 后全面超越 Struts2,成为最优秀的 M ...
- Python | 多种编码文件(中文)乱码问题解决
问题线索 1 可以知道的是,文本文件的默认编码并不是utf8. 我们打开一个文本文件,并点击另存为 2 我们在新窗口的编码一栏看到默认编码是ANSI.先不管这个编码是什么编码,但是通过下拉列表我们 ...
- hdu 3966 Aragorn's Story(树链剖分+树状数组/线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3966 题意: 给出一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路 ...
- 201671010133 2016-2017-2 《java程序设计》 初学java!
新学期伊始,我心中既充满了期待和希望,又有些许激动和感慨.期待的是即将接触许多新的知识,期待未来比过去过的更加踏实有趣,期待遇到更好的人和事等等.当然,面对从未了解过的新事物时,我想每个人的想法都大致 ...
- 后PMP时代下的敏捷项目管理全国在线讲座
活动时间:2017年9月7日(周四) 19:00-21:00 活动形式:在线直播 本次活动免费 互联网经济冲击下,产品创新成为企业生存的关键,"双模"成为很多企业必然的选择,传统 ...
- Centos 6修复/boot目录及fstab等系统文件
author:JevonWei 版权声明:原创作品 错误界面 系统修复过程中,若需要修复fatab挂载文件,磁盘分区为lvm逻辑卷格式,则默认在修复模式下处于不可活动状态,需使用vgchage -ay ...
- wowza拉流和推流接口备忘
拉流接口地址:https://www.wowza.com/docs/stream-management-query-examples# 推流接口地址:https://www.wowza.com/doc ...
- EF实例创建问题
场景:CodeFirst 情况下,在控制器新建一个EF数据库对象,以便运行时进行表的初始化创建 Private DemoContext db=new DemoContext (): 问题:什么时候释放 ...