我想在从活动A切换到活动B时执行共享元素转换。问题是当共享的imageViews比例类型不同时,转换动画不能正常工作。我注意到在转换的最初阶段出现“反弹”(我认为没有动画的imageView scaleType更改)。当我从活动B回到活动A时,我注意到了同样的“反弹”。
细节:
活动A包含带scaleType的imageView:centerCrop。 Actvity B包含带scaleType:fitXY的imageView。
当然,ImageView都有android:transitionName="sharedView"
。
我在xml中设置的转换如下所示:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds/>
<changeImageTransform/>
</transitionSet>
在有关此配置的文档中写入:
与ChangeBounds结合使用时,ChangeImageTransform允许更改大小,形状或ImageView.ScaleType的ImageView平滑地为内容设置动画。
那么为什么我的过渡不顺利呢?或者如果changeBounds
与changeImageTransform
似乎不起作用,如何在共享元素转换期间为scaleType更改设置动画?
值得一提的是,如果我使比例视图的比例类型相等(例如centerCrop和centerCrop) - 那么转换工作顺利,一切正常。
我已经解决了这个问题。您需要检查以下内容:
ImageView
(不要使用任何容器)。transitionName
(不是它的容器)。在我更新之后,changeImageTransform
将在2 ImageView
s之间平稳地改变scaleType
有同样的问题。通过为padding
设置相同的ImageView
属性来解决它。我不知道为什么会这样,但希望它可以帮助别人。