提问者:小点点

Android 共享元素转换不适用于不同的 img 缩放类型


我想在从活动 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),那么过渡工作顺利,一切都很好。


共2个答案

匿名用户

我已经在我的案例中解决了这个问题。以下是您需要检查的内容:

  • 确保源和目标活动的共享元素都是 ImageView(不要使用任何容器)。
  • 设置图像视图(而不是其容器)的转换名称

在我更新这个之后,changeImageTransform将在2个ImageView之间顺利地改变scaleType。

匿名用户

有同样的问题。通过为两个 ImageView 设置相同的填充属性来解决它。我不知道为什么它会这样工作,但希望它可以帮助某人。