I have the next situation. Activity[FragmentWithPager[PageWithGrid]]
and I want to make trandition animation from list item
to DetailFragment
but I don't know wnat I do wrong. I have added the same transitionName
to views in list item
and fragment detail
layouts and try to make transition animatiot with the code below.
val fragmentTransaction = supportFragmentManager.beginTransaction()
transitionItems.forEach { view ->
fragmentTransaction.addSharedElement(view, view.transitionName)
}
val fragment = DetailFragment()
val transitionSet = TransitionSet().apply {
addTransition(ChangeTransform())
addTransition(ChangeClipBounds())
addTransition(ChangeBounds())
}
fragment.sharedElementEnterTransition = transitionSet
fragment.sharedElementReturnTransition = transitionSet
fragmentTransaction.replace(R.id.root, fragment)
fragmentTransaction.addToBackStack(null)
fragmentTransaction.commit()
答案 0 :(得分:5)
我发现我做错了什么。 如果您使用寻呼机切换片段,则列表和页面中的每个项目的转换名称必须是唯一的。当我为每个转换名称添加了页面和列表索引时,动画开始起作用。
答案 1 :(得分:3)
共享元素转换API有点棘手并且有一些未定义的行为,即使你可以设法实现这一点,转换也不会顺利,这是我几个月前实现的一个解决方法:
而不是直接在GridFragment
内托管ViewPagerFragment
,而是将另一个Fragment
添加为容器:
Activity[ViewPagerFragment[ContainerFragment[GridFragment]]]
现在你有一个简单的Fragment to Fragment Transition可以顺利运行。
中的示例代码答案 2 :(得分:1)
答案 3 :(得分:0)
我通过谷歌发现这个样本非常有用,它以非常漂亮的方式处理片段 google transition sample
希望它能帮助你