ImageView共享元素转换(在Activity之间)以错误的scaleType开始

7

我在使用 fresco 的SimpleDraweeView时遇到了问题。

然而,即使我换成了Android ImageView,问题仍然存在。因此,我不能确定问题是由于Android还是fresco本身。

问题所在
  1. 第一个活动有回收视图,每个视图都有一个ImageView(或SimpleDraweeView)。想要的scaleType是“centerCrop”
  2. 第二个活动只有一个ImageView。想要的scaleType是“fitCenter”

然而,在我的私人项目中,以及示例项目中。
https://github.com/JackFan-Z/ActivitySharedElementTransition
ImageView从scaleType“fitCenter”开始,这是错误的。

我尝试推迟共享元素转换,并在SharedElementCallback的回调中设置不同的共享元素scaleType。但它们都没有真正起作用。有人可以帮忙找出问题出在哪里,或者在哪里调试吗?

问题截图 第一个活动的截图:
enter image description here

转换的截图:
enter image description here

我有同样的问题。 - Eliasz Kubala
有人可以帮忙指明一个进一步调查的方向吗? - Jack Fan
1个回答

2
正如您在ImageView中观察到的,这是Android限制。但是,我正在对Fresco比例类型进行一些更改,一旦我推送我的更改,就可以做到这一点。
简而言之,ScaleType不再是枚举类型(非常不灵活),而是被更改为可以实现任意缩放的接口。此更改已经在内部实现并将很快推送至GitHub。
除上述内容外,我正在实现InterpolatingScaleType,它仅基于插值值(0.0-1.0)在两种基础比例类型之间插值。值为0.0返回与基础scaleType1相同的变换,而值为1.0返回与基础scaleType2相同的变换。中间值是两者之间的线性组合。
InterpolatingScaleType可以平滑地在两种不同的缩放类型之间插值,这在动画中非常方便,例如在执行视图转换时。
一旦准备就绪,我将更新此答案。
编辑:
@burzumrus很好地提供了一个实现,您可以在GitHub上找到它。 Fresco的GitHub页面上也有关于此问题的线程

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接