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

问题描述 投票:2回答:2

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

细节:

活动A包含带scaleType的imageView:centerCrop。 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允许更改大小,形状或ImageView.ScaleType的ImageView平滑地为内容设置动画。

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

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

java android animation android-animation
2个回答
0
投票

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

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

在我更新之后,changeImageTransform将在2 ImageViews之间平稳地改变scaleType


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.