Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 在dismiss上设置对话框片段的动画大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在关闭时获得一个对话碎片动画 – 我试图覆盖dismiss,onDismiss,onCancel和onDestroy方法,如下所示,没有运气 – 有人能指出我正确的方向吗?

@Override
public 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上设置对话框片段的动画所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。