我想在从活动 A 切换到活动 B 时执行共享元素转换。问题是当共享图像视图缩放类型不同时,过渡动画无法顺利工作。我注意到在过渡的一开始就出现了“反弹”(我猜不是动画图像视图比例类型变化)。从活动 B 返回到活动 A 时,我注意到了相同的“反弹”。
详:
活动 A 包含具有缩放类型的图像视图:中心裁剪。Actvity B 包含具有 scaleType: fitXY 的图像视图。
当然,两个ImageView都有android:transitionName=“sharedView”。
我在 xml 中设置的过渡如下所示:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds/>
<changeImageTransform/>
</transitionSet>
在有关此配置的文档中编写:
结合 ChangeBounds,ChangeImageTransform 允许更改大小、形状或 ImageView.ScaleType 的 ImageView 平滑地对内容进行动画处理。
那么,为什么我的过渡不顺利呢?或者如何在共享元素转换期间对 scaleType 更改进行动画处理,如果 changeBounds
with changeImageTransform
似乎不起作用?
值得一提的是,如果我使共享视图的比例类型相等(例如 centerCrop 和 centerCrop),那么过渡工作顺利,一切都很好。
我已经在我的案例中解决了这个问题。以下是您需要检查的内容:
ImageView
(不要使用任何容器)。转换名称
。在我更新这个之后,changeImageTransform
将在2个ImageView
之间顺利地改变scaleType。
有同样的问题。通过为两个 ImageView
设置相同的填充
属性来解决它。我不知道为什么它会这样工作,但希望它可以帮助某人。