java - Android 共享元素转换不适用于不同的 img 比例类型

标签 java android animation android-animation

我想在从 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.

那么,为什么我的过渡工作不顺利?或者,如果使用 changeImageTransformchangeBounds 似乎不起作用,如何在共享元素转换期间为 scaleType 更改设置动画?

值得一提的是,如果我使共享 View 的比例类型相等(例如 centerCrop 和 centerCrop)——那么过渡会顺利进行,一切正常。

最佳答案

我已经解决了这个问题。这是您需要检查的内容:

  • 确保源和目标 Activity 的共享元素都是 ImageView(不要使用任何容器)。
  • 为 ImageView(不是它的容器)设置 transitionName

更新后,changeImageTransform 将在 2 个 ImageView 之间平滑地完成其更改 scaleType 的工作

关于java - Android 共享元素转换不适用于不同的 img 比例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435381/

相关文章:

java - 调试时会忽略依赖项 org.apache.httpcomponents :httpclient:4. 5,因为它可能与提供的内部版本冲突

Android 查看动画到顶部父级

当我在 spring 批处理中使用 scpoe ="step"将 FlatFileItemWriter 配置为流时,出现 java.lang.IllegalStateException

java - android中的 fatal error 异常

android - 线性布局与相对布局

jquery - 滚动 jquery 动画缺少 div

java - 如何将 "manual animation"设计成没有代码延迟的 Android 游戏

java - 如何建立到 mail.google.com 的单向 SSL 连接?

java - @PreserveOnRefresh - 目的和需要?

android - Android SDK无法解决Twilio依赖关系