一个封装好的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

相关文章
|
6月前
|
JSON 算法 前端开发
2705. 精简对象
2705. 精简对象
53 0
|
1月前
|
SQL Arthas 监控
看大神如何使用3行代码提升接口性能
看大神如何使用3行代码提升接口性能
25 0
|
6月前
|
前端开发 JavaScript 安全
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
|
6月前
|
小程序
uniapp小程序更新逻辑,按实际开发为主
uniapp小程序更新逻辑,按实际开发为主
一个 C#例子,代码简化的过程
一个 C#例子,代码简化的过程
67 0
|
存储 JSON 前端开发
Android数据库存储模块封装,让操作记录更好用可复用
Android数据库存储模块封装,让操作记录更好用可复用
|
前端开发 JavaScript
如何编写神奇的「插件机制」,优化基于 Antd Table 封装表格的混乱代码
最近在一个业务需求中,我通过在 Antd Table 提供的回调函数等机制中编写代码,实现了这些功能: ✨ 每个层级缩进指示线 ✨ 远程懒加载子节点 ✨ 每个层级支持分页
|
存储 缓存 前端开发
Yii2.0的AssetBundle类一共有哪些方法?可以实现哪些功能?底层原理是什么?
Yii2.0的AssetBundle类一共有哪些方法?可以实现哪些功能?底层原理是什么?
125 0
|
XML Java 数据格式
你写的代码扩展性高吗?快试试用Spring注入方式来解耦代码!
你写的代码扩展性高吗?快试试用Spring注入方式来解耦代码!
你写的代码扩展性高吗?快试试用Spring注入方式来解耦代码!
|
JavaScript 开发者
改造原有代码-使用封装的函数实现|学习笔记
快速学习改造原有代码-使用封装的函数实现