如何解决动画运行不正常
class DialFragment: DialogFragment() {
private lateinit var image001: ImageView
private val caller = object: FingerprintManager.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int,errString: CharSequence?) {
super.onAuthenticationError(errorCode,errString)
listener.onDialClick(errString.toString(),"2")
dismiss()
}
override fun onAuthenticationSucceeded(result: FingerprintManager.AuthenticationResult?) {
super.onAuthenticationSucceeded(result)
listener.onDialClick("yes","1")
var avp = image001.drawable as AnimatedVectorDrawable
avp.start()
dismiss()
}
override fun onAuthenticationFailed() {
super.onAuthenticationFailed()
listener.onDialClick("no","3")
dismiss()
}
avp.start()
调用的动画未显示,验证成功后对话框片段直接关闭。如果我省略下面的 dismiss()
-Call 那么它可以正常工作。我的问题是为什么会这样以及如何解决?是的,我知道 FingerprintManager-API 已被弃用,我正在运行它以进行测试。
解决方法
dismiss()
立即结束您的 DialogFragment 的生命周期,因此它将没有更多机会向您展示 Fragment 中的任何动画。您应该在延迟后关闭(无论动画有多长)。
override fun onAuthenticationSucceeded(result: FingerprintManager.AuthenticationResult?) {
super.onAuthenticationSucceeded(result)
listener.onDialClick("yes","1")
var avp = image001.drawable as AnimatedVectorDrawable
avp.start()
activity?.runOnUiThread(300L) { // put however long your animation takes
dismiss()
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。