我想实现自定义Process
转换。我在两个活动(Pre-Lollipop
和A
)中都有一个共享元素,这是一个简单的B
。我使用共享元素的自定义转换的工作原理与ImageView
转换相同。首先,我将native
活动的背景设置为透明,然后捕获共享元素的开始状态并将此数据传递给B
活动。在B
中,我捕获共享视图的结束状态并创建一个B
,它将为两个状态之间的视图设置动画,当然这个动画发生在Animator
活动中。
此时,只要我在两个活动中都拥有相同的共享元素,一切都很完美,并且我能够应用适当的返回转换。但是,当我想实现某种类型的库(当你可以在B
活动中向左和向右滑动图像时)我遇到了返回转换的问题。在这种情况下,两个活动共享相同的数据源,因此用户只需更改B
活动中的共享元素即可。那么,如果我在第二个活动中更改共享元素怎么办?那么,显然,为了实现返回转换,我需要知道B
活动中该元素的大小和位置,对吧?
基本上,我们只有A
个方案(如果我错了,请纠正我):
2
回调将该共享元素的状态从B
传递到A
个活动,并在onActivityResult
中应用返回动画。A
活动中获取共享元素的属性,并在A
中实现返回动画。此外,我还必须重新绘制B
或使用RecyclerView
或requestLayout()
方法保存数据的任何内容。
我知道我可以使用invalidate()
回调和native
方法通过SharedElementCallback
转换实现所有这些内容。该框架以某种方式处理以在被调用的活动中应用此返回转换而不是在调用者中。
所以,我想知道是否有其他选择?