我有一个自定义Transition
用于我的两个活动之间的共享元素。
我的转换不起作用,因为TransitionValues
参数View
在两种方法中具有相同的属性,captureStartValues
并且captureEndValues
. 因此,一旦开始值和结束值相同,我的过渡就没有什么可做的了。
为什么会这样?
我有一个自定义Transition
用于我的两个活动之间的共享元素。
我的转换不起作用,因为TransitionValues
参数View
在两种方法中具有相同的属性,captureStartValues
并且captureEndValues
. 因此,一旦开始值和结束值相同,我的过渡就没有什么可做的了。
为什么会这样?
就我而言,我想在两个元素的背景可绘制对象之间进行转换。经过大量挖掘后,我终于意识到传递给 onCaptureStartValues 方法的视图不是来自第一个活动的实际视图,而是在第二个活动中从过渡框架传递的包裹中创建的表示。
这与直觉相反,但最终将我引向以下文章,其中包含有关如何完成您所追求的内容的信息示例。
https://medium.com/@belokon.roman/custom-transitions-in-android-f8949870bd63
通常,您使用 SharedElementCallback 将自定义属性注入到您的转换对象中。我真的希望这种行为在未来会有所改变,因为它感觉很hack-ish。
您必须设置一个SharedElementCallback
usingsetEnterSharedElementCallback
并覆盖 onSharedElementStart 和 onSharedElementEnd 并在开始和结束处设置滚动。当它反转时,在开始反转过渡之前调用结束。