android – 在dismiss上设置对话框片段的动画

android – 在dismiss上设置对话框片段的动画,第1张

概述我试图在关闭时获得一个对话碎片动画 – 我试图覆盖dismiss,onDismiss,onCancel和onDestroy方法,如下所示,没有运气 – 有人能指出我正确的方向吗? @Overridepublic void dismiss() { if (mDismissAnimationFinished) { super.dismiss(); } else { 我试图在关闭时获得一个对话碎片动画 – 我试图覆盖dismiss,ondismiss,onCancel和onDestroy方法,如下所示,没有运气 – 有人能指出我正确的方向吗?

@OverrIDepublic voID dismiss() {    if (mdismissAnimationFinished) {        super.dismiss();    } else {        mShrink.setAnimationListener(new Animation.AnimationListener() {            @OverrIDe            public voID onAnimationStart(Animation animation) {            }            @OverrIDe            public voID onAnimationEnd(Animation animation) {                mdismissAnimationFinished = true;                dismiss();            }            @OverrIDe            public voID onAnimationRepeat(Animation animation) {            }        });        mCurrentContainer.startAnimation(mShrink);    }}
解决方法 我只是使用常规对话框子类来完成此 *** 作,我的解决方案应该完全转移到DialogFragment.

看起来你非常接近,只是你应该在onAnimationEnd()中调用super.dismiss()而不是dismiss().原因是如果你调用dismiss(),它将递归调用你已经在的函数!

编辑:

在外部类中定义包装器方法或使用YourDialogFragment.super()调用它.

voID parentdismiss() { super.dismiss() }

并从你的onAnimationEnd()调用它.

即使这样,当你取消对话时,你仍然会遇到一个与竞争条件有关的问题,并且被另一个线程解雇了.要解决这个问题,请在第一次调用ondismiss()时设置一个布尔值mIsdismissed,以便在另一个onStart()发生之前再次调用它(你将覆盖onStart()以反转布尔值)ondismiss()的正文没有执行两次.

我在这里写了一个解决方案,它不使用DialogFragment,只是一个常规的Dialog.它经过测试和工作,所以只需查看我使用的逻辑并将其复制,或者如果您愿意,请使用它.

https://github.com/tom-dignan/nifty/blob/master/src/com/tomdignan/nifty/dialogs/NiftyProgressDialog.java

总结

以上是内存溢出为你收集整理的android – 在dismiss上设置对话框片段的动画全部内容,希望文章能够帮你解决android – 在dismiss上设置对话框片段的动画所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1126565.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存