我必须实现从viewpager到recyclerview的过渡,尚不确定哪种方法更合适。想法是扩展de ViewPager或Recycler,并在扩展时显示更多信息,而在折叠时显示较少信息。
使用MotionLayout展开和折叠非常简单,但是我找不到动画方法来更改适配器的每个元素中显示的内容。
是否可以同时为适配器的内容设置动画?
答案 0 :(得分:0)
我为您提供了一个丑陋的解决方案。我使用一个包含一些运动布局的回收视图。有一个展开状态和一个折叠状态,我们一次只想要一个展开状态。
一种关闭片段/活动中的位置的方法
fun collapseMotionLayout(positions: IntArray){
positions.forEach { position ->
recyclerView.findViewHolderForAdapterPosition(position)?.let { childView ->
//transitionToEnd() or transitionToStart() or toggleUI() or whatever
(childView.itemView.findViewWithTag("motionlayout") as? MotionLayout)?.collapse()
}
}
然后在您将在视口中定义的运动布局的TransitionListener中调用片段/活动(我们使用自定义视图)
tListener = object: TransitionListener{
override onCompleted(){
callBack.invoke(positionsForAnimation())
}
}
我只看到这一次使单个运动布局崩溃。我发现同时运行多个运动布局会导致性能问题。