QuickDialog使用详解-快速创建配置Diaog

本文介绍了一种简化Dialog创建过程的工具——QuickDialog。它采用链式调用配置方式,可极大减少代码冗余,提高开发效率。文章还提供了具体示例说明其使用方法,并介绍了如何实现更灵活的View设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QuickDialog是什么东西呢,顾名思义快速创建配置Diaog,方便使用Dialog。

那此组件有什么特点:

 创建Dialog使用链式配置方式,使用方便,代码简洁,集成QuickViewHolder,可快速对dialog数据进行设置,无需再findviewById对View进行单个设置

接下来我们看一下正常写法:

1、先定义Dialog与Layout中的View

    var dialog: Dialog? = null
    lateinit var titleTv: TextView
    lateinit var leftTv: TextView
    lateinit var rightTv: TextView

2、实例化Dialog并显示

fun showDialog(title: String, leftTxt: String, rightTxt: String) {
        if (dialog == null) {
            val itemView = LayoutInflater.from(this).inflate(R.layout.dialog_test, null)
            titleTv = findViewById(R.id.titleTv)
            leftTv = findViewById(R.id.leftTv)
            rightTv = findViewById(R.id.rightTv)
            dialog = Dialog(this, R.style.AppTheme)
            dialog!!.setContentView(itemView)
            dialog!!.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            dialog!!.setCanceledOnTouchOutside(false)
//            dialog!!.window?.setLayout(500, 500)
        }
        titleTv.text = title
        leftTv.text = leftTxt
        rightTv.text = rightTxt
        if (!dialog!!.isShowing)
            dialog!!.show()
    }

这种方法,每次都需要重新定义Dialog,许多重复代码,而且还需要定义一堆Dialog中的View,稍显冗余麻烦。我们如何优化呢

那么,请看下QuickASync的写法

QuickDialog.Builder(this@MainActivity).setLayout(R.layout.dialog_test).show()
                                .setText(R.id.leftTv, "取消", View.OnClickListener {
                                    QuickToast.showToastDefault("点击了取消")
                                    QuickDialog.dismiss()
                                }).setText(R.id.rightTv, "确定", View.OnClickListener {
                                    QuickToast.showToastDefault("点击了确定")
                                    QuickDialog.dismiss()
                                })

直接通过链式调用配置了text和OnClickListener,只要屏幕够大,直接一行搞定。

并且组件缓存了上一个Dialog,只要context与layout没有发生变化不会重复创建,节省内存。

当然,实际业务中肯定不会全是这么简单使用。

1、页面中使用多个dialog,怎么使用呢?

QuickDialog.Builder(this).setLayout(R.layout.dialog_test).create()

调用create方法创建一个Dialog,保存起来即可。

2、如果需要更灵活的设置View呢?

QuickDialog.Builder(this).setLayout(R.layout.dialog_test).build().viewHolder()

只需要通过build获取到viewHolder实例,保存起来即可。

使用起来还是很灵活方便滴

推荐使用gradle接入

implementation 'org.quick.android:quick-component:latest.release'

统一初始化放在Application中:

QuickAndroid.init(this)

 

源码地址:https://github.com/SpringSmell/quick-component

好了,到这里就结束,好东西那当然要分享了,马上告诉小伙伴我发现了一个很酷的东西吧

QuickAndroid系列全家桶

带有各种动画效果的弹出对话框控件。你也可以自定义样式及弹出动画。效果非常棒,且使用简单。项目地址:https://github.com/H07000223/FlycoDialog_Master 效果图:        依赖的库文件:   FlycoAnimation_Lib   FlycoDialog_Lib   nineoldandroids这三个库文件都可以使用jar包:FlycoAnimation_Lib-v1.0.0.jarFlycoDialog_Lib-v1.0.0.jarnineoldandroids-2.4.0.jar  但是目前生成的jar包与源文件不一致,建议还是想我demo中那样使用源文件或者你自己生成jar包如何使用一个最简单的使用:final NormalDialog dialog = new NormalDialog(context);//创建对话框实例 dialog.content("是否确定退出程序?")//设置对话框内容                 .showAnim(bas_in)//设置弹出动画                 .dismissAnim(bas_out)//设置关闭动画                 .show(); dialog.setOnBtnClickL(//设置按钮监听                 new OnBtnClickL() {                     @Override                     public void onBtnClick() {                         T.showShort(context, "left");                         dialog.dismiss();                     }                 },                 new OnBtnClickL() {                     @Override                     public void onBtnClick() {                         T.showShort(context, "right");                         dialog.dismiss();                     }                 });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值