作者:妞妞吃粑粑_577 | 来源:互联网 | 2022-10-10 06:02
我在我的应用程序中放置了Android导航组件。
某些过渡效果很好,但是对此我有一个错误。来自片段A的过渡视图保留在新片段(B)上并隐藏一些元素。此外,当我滚动片段时,视图不会随之滚动。这是我得到的错误:
1 2 3 | W /t .qoqa.ui.debu: Accessing hidden method Landroid /view/GhostView ;->removeGhost(Landroid /view/View ;)V (greylist-max-p, reflection, denied)
I /GhostViewApi21 : Failed to retrieve removeGhost method
java.lang.NoSuchMethodException: android.view.GhostView.removeGhost [class android.view.View]
|
我从片段A中的RecyclerView开始,在其中单击时,我设置了唯一的过渡名称。
然后,我将该名称作为参数使用SafeArgs以及FragmentNavigatorExtras中的视图进行传递。
在片段B中,我延迟了onCreate:中的过渡, postponeEnterTransition()
并设置了过渡类型:
1 2 3 4 5 6 7 | transition = TransitionSet().apply {
addTransition(ChangeTransform())
addTransition(ChangeBounds())
startDelay = 150
}
sharedElementEnterTransition = transition
sharedElementReturnTransition = transition
|
我在onViewCreated中设置名称: ViewCompat.setTransitionName(product_image, args.imageTransitionName)
最后,当准备好显示图像时,Glide Listener开始过渡:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | listener = object: RequestListener<drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<drawable>?,
isFirstResource: Boolean
): Boolean {
startPostponedEnterTransition()
return false
}
override fun onResourceReady(
resource: Drawable?,
model: Any?,
target: Target<drawable>?,
dataSource: DataSource?,
isFirstResource: Boolean
): Boolean {
startPostponedEnterTransition()
return false
}
}
< /drawable >< /drawable >< /drawable >
|
而且返回转换也不起作用。
我只使用androidx.transition.*
元素
在此先感谢您的帮助