【发布时间】:2021-06-29 07:01:54
【问题描述】:
我想在具有两个共享元素的片段之间进行转换。但问题是:只有一个动画。
共享元素取自第一个片段列表中的 viewHolder。我使用的过渡来自 Material 库,正是这些 https://medium.com/androiddevelopers/material-motion-with-mdc-c1f09bb90bf9
片段 A:
fragmentManager.commit {
replace([...])
setReorderingAllowed(true)
addSharedElement(viewA, viewA.transitionName)
addSharedElement(viewB, viewB.transitionName)
addToBackStack(fragmentClass.qualifiedName)
}
片段 B:
sharedElementReturnTransition = MaterialContainerTransform().apply {
scrimColor = Color.TRANSPARENT
duration = 3000L
interpolator = DecelerateInterpolator()
}
binding.headerContainer.header.cover.transitionName = arguments?.getString("firstTrName") ?: return
binding.headerContainer.title.cover.transitionName = arguments?.getString("secondTrName") ?: return
binding.headerContainer.header.setImageResource(arguments?.getString("image") ?: return)
binding.headerContainer.title.text = arguments?.getString("title") ?: return
似乎只有我在 commit{} 中添加的最后一个元素是转换的元素。我检查了所有内容,转换名称是唯一的,所有数据都在第二个片段中,所有转换名称,这不是参数问题。有任何想法吗?非常感谢您的帮助,这是一个非常重要的客户请求。
【问题讨论】:
标签: android kotlin fragment shared-element-transition fragment-transitions