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

时间:2017-02-24 09:46:04

标签: java android animation android-animation

我想在从活动A切换到活动B时执行共享元素转换。问题是当共享的imageViews 比例类型不同时,转换动画无法顺利运行。我注意到在转换的最初阶段出现“反弹”(我认为没有动画的imageView scaleType更改)。当我从活动B回到活动A时,我注意到了同样的“反弹”。

详细说明:

活动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>

在有关此配置的文档中写道:

  

与ChangeBounds结合使用,ChangeImageTransform允许   ImageViews可以更改大小,形状或 ImageView.ScaleType 以进行动画处理   内容顺利。

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

值得一提的是,如果我使共享视图的比例等级(例如centerCrop和centerCrop) - 那么转换工作顺利,一切正常。

2 个答案:

答案 0 :(得分:0)

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

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

我对此进行更新后,changeImageTransform将在2 ImageView s

之间平稳地更改scaleType

答案 1 :(得分:-1)

有同样的问题。通过为paddingImageView设置相同的int mLastSelectedIndex = -1; 属性来解决此问题。我不知道为什么会这样,但希望它可以帮助别人。