我在我的应用程序中放置了Android导航组件。
某些过渡效果很好,但是对此我有一个错误。来自片段A的过渡视图保留在新片段(B)上并隐藏一些元素。此外,当我滚动片段时,视图不会随之滚动。这是我得到的错误:
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()
并设置了过渡类型:
transition = TransitionSet().apply { addTransition(ChangeTransform()) addTransition(ChangeBounds()) startDelay = 150 } sharedElementEnterTransition = transition sharedElementReturnTransition = transition
我在onViewCreated中设置名称: ViewCompat.setTransitionName(product_image, args.imageTransitionName)
最后,当准备好显示图像时,Glide Listener开始过渡:
listener = object: RequestListener{ override fun onLoadFailed( e: GlideException?, model: Any?, target: Target ?, isFirstResource: Boolean ): Boolean { startPostponedEnterTransition() return false } override fun onResourceReady( resource: Drawable?, model: Any?, target: Target ?, dataSource: DataSource?, isFirstResource: Boolean ): Boolean { startPostponedEnterTransition() return false } }
而且返回转换也不起作用。
我只使用androidx.transition.*
元素
在此先感谢您的帮助