kongzue / DialogX

💬 DialogX dialog box component library, easy to use, more customizable, more scalable, easy to achieve a variety of dialog boxes. DialogX对话框组件库,更加方便易用,可自定义程度更高,扩展性更强,轻松实现各种对话框、菜单和提示效果,更有Material You、iOS、MIUI等主题扩展可选
Apache License 2.0
2.09k stars 217 forks source link

【功能建议】能否在对话框dismiss之前追加逻辑 #435

Closed stars-one closed 7 months ago

stars-one commented 7 months ago

我想通过PopMenu实现一个下拉菜单选择效果,目前发现如果在生命周期里或onDismiss方法里回调,都会感觉慢一拍(即对话框关闭了才会触发我的后续逻辑)

但是如果我是在选项点击事件里触发,则不会有此问题

在选项里点击的效果:

预览动图

代码:

llOption.setOnClickListener {
                iv.animate().rotation(180f).setDuration(200).start()
                PopMenu.show(tvOption, arrayOf("选项1", "选项2", "选项3"))
                    .onDismiss {
                        //这里好像执行似乎是在dismiss之后,如果我想要dismiss之前执行,有无办法?
                        //iv.animate().rotation(0f).setDuration(200).start()
                    }
                    .setOnMenuItemClickListener { dialog, text, index ->
                        //如果在这里,效果就比较好
                        iv.animate().rotation(0f).setDuration(200).start()
                        false
                    }
                    .setOverlayBaseView(false)
                    .alignGravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL
            }

如果我在onDismiss方法里执行动画效果,则是下面这个效果(感觉就是dismiss执行后才执行的回调)

因为我需要点击空白处需要触发那个箭头还原的动画,所以才想着在dismiss之前触发我的动画逻辑

预览动图

kongzue commented 7 months ago

这个目前暂时确实没有,可以当做新需求看待

kongzue commented 7 months ago

预计采用的写法如下:

image

使用 new 构建对话框对象并复写其 preDismiss 方法即可处理刚触发关闭对话框时的事件,请注意,return true 表示拦截关闭操作。

相关代码已经提交 Github,等待下个测试版本合并更新,如果急需也可以自行拉取代码打包 aar 使用。

stale[bot] commented 7 months ago

长时间未收到回复暂时关闭了此问题,若有疑问请继续回复。此消息来自于自动化 Issues 处理 Bot,若问题严重或紧急你也可以通过反馈群联系到我:590498789