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

相关文章
|
JavaScript 前端开发
Element-ui 中表单(Form)验证数字值范围(大小)
Element-ui 中表单(Form)验证数字值范围(大小)
2586 0
Element-ui 中表单(Form)验证数字值范围(大小)
|
6月前
|
存储 监控 网络协议
了解流量探针,助你更好地优化网络
流量探针是现代网络运维中不可或缺的工具,用于实时监测网络数据包,提供一手数据。它通过镜像方式采集、过滤、分析流量,支持从二层到七层协议解码,助力网络瓶颈排查、业务性能优化及安全威胁检测。合理部署流量探针可实现精细化网络管理,提升性能与安全性。
|
12月前
|
缓存 监控 JavaScript
Vue.js 框架下的性能优化策略与实践
Vue.js 框架下的性能优化策略与实践
|
JavaScript 前端开发 开发者
原型链深入解析:JavaScript中的核心机制
【10月更文挑战第13天】原型链深入解析:JavaScript中的核心机制
333 0
|
负载均衡 应用服务中间件 PHP
使用nginx-haproxy实现七层负载均衡
【4月更文挑战第13天】使用nginx实现动静分离的负载均衡集群
305 4
DHL
|
缓存 算法 安全
[译][1.4K+ Star] Kotlin 新秀 Coil、Glide 和 Picasso 大比拼
Coil 是基于 Kotlin 开发的首个图片加载库,来自 Instacart 团队,来看看官网对它的最新的介绍。
DHL
1045 0
[译][1.4K+ Star] Kotlin 新秀 Coil、Glide 和 Picasso 大比拼
|
Kubernetes 开发工具 Docker
使用 Docker Desktop进行 BPF 开发
Docker Desktop 是 Windows 和 Mac 上最为流行 Docker 开发环境。是否有办法在Docker Desktop中,利用容器来使用eBPF呢?
2706 103
使用 Docker Desktop进行 BPF 开发
百亿数据分库分表核心流程详解
前言 俗话说:面试造火箭,入职拧螺丝。尽管99.99%的业务都不需要用到分库分表,但是分库分表还是频繁出现在大厂的面试中。 分库分表涉及到的内容非常多,有很多细节,如果在面试中被问到了,既是挑战,也是机会,如果你能回答好的话,会给你的面试加很多分。 由于业务量的关系,绝大部分同学都很难有实际分库分表的机会,因此很多同学在碰到这个问题时很容易懵逼。 因此今天跟大家分享一下分库分表的相关知识,本文内容源于实际高并发+海量数据业务下的实战和个人的思考总结。
|
移动开发 JavaScript C#
分享53戏源代码总有一个是你想要的(亲测每一个均可用)
分享53戏源代码总有一个是你想要的(亲测每一个均可用)
516 0
|
存储 开发工具 Android开发
如何实现Android端获取RTSP|RTMP流转推RTMP
技术背景 最近不少开发者找到我们,他们在做智能家居等传统行业时,希望实现在Android板件拉取本地的RTSP或RTMP流,然后对外推送RTMP出去,亦或内部启个轻量级RTSP服务,提供个对外对接的媒介URL,简单来说,设计架构图如下:
832 0