我想在从 Activity A 切换到 Activity B 时执行共享元素过渡。问题是当共享 imageViews scale types 不同时,过渡动画无法流畅运行。我注意到在过渡开始时出现“反弹”(我猜是在非动画 imageView scaleType 更改上)。从 Activity B 返回 Activity A 时,我注意到同样的“反弹”。
详细信息:
Activity A 包含带有 scaleType: centerCrop 的 imageView。 Actvity B 包含带有 scaleType: fitXY 的 imageView。
当然,这两个 ImageView 都有 android:transitionName="sharedView"
。
我在 xml 中设置的转换如下所示:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds/>
<changeImageTransform/>
</transitionSet>
在关于这个配置的文档中写道:
In combination with ChangeBounds, ChangeImageTransform allows ImageViews that change size, shape, or ImageView.ScaleType to animate contents smoothly.
那么,为什么我的过渡工作不顺利?或者,如果使用 changeImageTransform
的 changeBounds
似乎不起作用,如何在共享元素转换期间为 scaleType 更改设置动画?
值得一提的是,如果我使共享 View 的比例类型相等(例如 centerCrop 和 centerCrop)——那么过渡会顺利进行,一切正常。
最佳答案
我已经解决了这个问题。这是您需要检查的内容:
- 确保源和目标 Activity 的共享元素都是
ImageView
(不要使用任何容器)。 - 为 ImageView(不是它的容器)设置
transitionName
。
更新后,changeImageTransform
将在 2 个 ImageView
之间平滑地完成其更改 scaleType 的工作
关于java - Android 共享元素转换不适用于不同的 img 比例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435381/