MotionLayout为内容的动画制作者recyclerview或viewpager

时间:2019-10-10 15:27:01

标签: android android-recyclerview android-motionlayout

我必须实现从viewpager到recyclerview的过渡,尚不确定哪种方法更合适。想法是扩展de ViewPager或Recycler,并在扩展时显示更多信息,而在折叠时显示较少信息。

使用MotionLayout展开和折叠非常简单,但是我找不到动画方法来更改适配器的每个元素中显示的内容。

是否可以同时为适配器的内容设置动画?

1 个答案:

答案 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())
    }
}

我只看到这一次使单个运动布局崩溃。我发现同时运行多个运动布局会导致性能问题。