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)
好了,到这里就结束,好东西那当然要分享了,马上告诉小伙伴我发现了一个很酷的东西吧。
QuickAndroid系列全家桶