一个封装好的dialog工具类,减少重复的代码,简洁又方便使用!

简介: 一个封装好的dialog工具类,减少重复的代码,简洁又方便使用!

前言:

在很久很久以前,我就写过一篇文章介绍自定义dialog的“自定义Dialog提示框高仿QQ浏览器版本更新提示框”,哎,简直是弱爆了,如果按照那种方式去写代码,估计很难维护,代码也不直观,所以我就将自定义的dialog封装起来了,将一些重复用到的代码封装成方法直接调用,那是多么爽快的事情啊。

demo

image.png

使用方法:

Step 1

Gradle

dependencies {
        compile 'com.superluo:dialog:1.0.1'
}

Maven

<dependency>
  <groupId>com.superluo</groupId>
  <artifactId>dialog</artifactId>
  <version>1.0.1</version>
  <type>pom</type>
</dependency>

Step 2

xml中创建自己想要实现的dialog布局,喜欢就好,哈哈。

Step 3

接下来就可以通过简洁的代码调用封装好dialog工具类,实现你想要的效果了。

(1)简单调用:

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .build()
                .show();

(2)使用addViewOnclick(viewId, listener)方法添加view的点击监听:

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .build()
                .show();

(3)使用cancelTouchout(boolean)方法设置是否点击dialog背景取消dialog (默认为true):

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .build()
                .show();

(4)使用setDialogAnim(R.style.xxx)方法设置dialog进出动画:

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .setDialogAnim(R.style.xxx)
                .build()
                .show();

(5)使用setDialogPosition(position)方法设置dialog在屏幕的显示位置 (默认为屏幕中间):

new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .setDialogAnim(R.style.xxx)
                .setDialogPosition(xxx)
                .build()
                .show();

(6)设置dialog宽高,默认宽为屏幕的0.7,高为包裹内容。下面提供了几种设置宽高的方法(调用方法如上):

setHeightPX(int val)//用px设置dialog高度
setWidthPX(int val)//用px设置dialog宽度

setHeightDP(int val)//用dp设置dialog高度
setWidthDP(int val)//用dp设置dialog宽度

setHeightDimenRes(int dimenRes)//用dimen设置dialog高度
setWidthDimenRes(int dimenRes)//用dimen设置dialog宽度

(7)使用cancel()方法取消dialog显示:

CustomDialog dialog = new CustomDialog.Builder(this)
                .view(R.layout.xxx)
                .addViewOnclick(R.id.xxx,listener)
                .cancelTouchout(false)
                .setDialogAnim(R.style.xxx)
                .setDialogPosition(xxx)
                .build();

        //dialog显示
        dialog.show();
        、、、
        //取消dialog显示
        dialog.cancel();

(8)最后还可以使用获取控件实例的方法,以便在代码里设置控件的文本属性;

dialog = new CustomDialog.Builder(this)
              .view(R.layout.dialog_custom_view1)
              .addViewOnclick(R.id.tv_cancel,listener)
              .addViewOnclick(R.id.tv_update,listener)
              .build();
      //代码设置view属性
      TextView tv_title = dialog.findView(R.id.tv_title);
      TextView tips = dialog.findView(R.id.tv_tips);
      TextView tv_update = dialog.findView(R.id.tv_update);
      tv_title.setText("辞职信");
      tips.setText("由于程序猿这行业是高危行业,所以我决定明天就向老板申请离职,毕竟世界那么大,我还想活着去看看");
      tv_update.setText("立即辞职");

      dialog.show();

demo下载地址:GitHub

相关文章
|
5月前
|
存储 Java
软件开发常用之SpringBoot文件上传接口编写(中),一本书,代码大全(里面有很多代码重构的方法),屎山代码的原因是不断追加逻辑,在错误代码上堆积新的功能,在写完逻辑之后去思考一下,逻辑合理不
软件开发常用之SpringBoot文件上传接口编写(中),一本书,代码大全(里面有很多代码重构的方法),屎山代码的原因是不断追加逻辑,在错误代码上堆积新的功能,在写完逻辑之后去思考一下,逻辑合理不
|
7月前
|
JavaScript 前端开发 测试技术
编写JavaScript模块化代码主要涉及将代码分割成不同的文件或模块,每个模块负责处理特定的功能或任务
【5月更文挑战第10天】编写JavaScript模块化代码最佳实践:使用ES6模块或CommonJS(Node.js),组织逻辑相关模块,避免全局变量,封装细节。利用命名空间和目录结构,借助Webpack处理浏览器环境的模块。编写文档和注释,编写单元测试以确保代码质量。通过这些方法提升代码的可读性和可维护性。
63 3
|
7月前
|
前端开发 JavaScript 安全
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
|
7月前
|
小程序
uniapp小程序更新逻辑,按实际开发为主
uniapp小程序更新逻辑,按实际开发为主
|
7月前
|
JavaScript 前端开发 程序员
10个简单方法让你的代码更优雅
10个简单方法让你的代码更优雅
一个 C#例子,代码简化的过程
一个 C#例子,代码简化的过程
70 0
|
SQL 存储 Java
如何模拟MyBatis对象映射赋值的过程,以及如何通过这种方式来简化我们的JDBC开发工作?
如何模拟MyBatis对象映射赋值的过程,以及如何通过这种方式来简化我们的JDBC开发工作?
107 0
|
前端开发 JavaScript
如何编写神奇的「插件机制」,优化基于 Antd Table 封装表格的混乱代码
最近在一个业务需求中,我通过在 Antd Table 提供的回调函数等机制中编写代码,实现了这些功能: ✨ 每个层级缩进指示线 ✨ 远程懒加载子节点 ✨ 每个层级支持分页
|
测试技术 数据库 Python
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好,好歹自己鼓 捣出了,但是时间和效率并不是很高,下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。
265 0
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
|
XML Java 数据格式
你写的代码扩展性高吗?快试试用Spring注入方式来解耦代码!
你写的代码扩展性高吗?快试试用Spring注入方式来解耦代码!
你写的代码扩展性高吗?快试试用Spring注入方式来解耦代码!