为共享元素回调添加侦听器不会更改视图可见性



我在两个活动之间使用共享元素转换。第二个活动由包含片段的视图寻呼机组成。我希望在共享元素转换结束时进行进一步的更改。这是回调:

setEnterSharedElementCallback(
object : SharedElementCallback() {
override fun onMapSharedElements(
names: MutableList<String>,
sharedElements: MutableMap<String, View>
) {
val keySharedElementView = sharedElements[videoPath[currentPosition]]
if (keySharedElementView != null) {
Log.i("KSEV", "Not Null")
ViewCompat.animate(keySharedElementView)
.setListener(object : ViewPropertyAnimatorListenerAdapter() {
override fun onAnimationEnd(view: View?) {
super.onAnimationEnd(view)
Log.i("KSEV","Ended")
runOnUiThread { k 
videoThumb.visibility = GONE
if (videoThumb.visibility == GONE) {
Log.i("SEV", "GONE")
}
}
}
}).start()
}
}
})

打印最后一条日志语句GONE。但画面仍然清晰可见。如何更改其可见性?

您的代码看起来不错,只是您还没有开始动画,因此没有onAnimationEnd((回调。

修改您的代码如下:

ViewCompat.animate(keySharedElementView)
.setListener(object : ViewPropertyAnimatorListenerAdapter() {
override fun onAnimationEnd(view: View?) {
super.onAnimationEnd(view)
Log.i("KSEV","Ended")
}
}).setDuration(250).start()

最新更新