Android共享元素在不同scaleType之间的过渡

问题描述 投票:0回答:1

我关注了这个article of android develop blog,这是他的source code

该演示效果很好,但是通常我们更喜欢在图像列表中使用centerCrop缩放比例类型,并在详细信息模式下使用fitCenter。当我修改代码以实现此目的时,过渡无法处理比例​​类型的更改。从详细信息片段返回时,动画以错误的缩放比例类型开始。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmxvbGkubmV0LzIwMjAvMDIvMjMvR1VUbVc1NFF2YzdYb0xuLmdpZiJ9” alt =“>

我找到了ChangeImageTransform转换。该文件说:

此过渡在场景更改之前和之后捕获ImageView的矩阵,并在过渡期间对其进行动画处理。

与ChangeBounds结合使用,ChangeImageTransform允许更改大小,形状或ImageView.ScaleType的ImageView平滑地为内容设置动画。

所以我更改了转换集:

ChangeImageTransform

但是动画变得越来越丑陋:

“

如何在不同比例类型之间平滑转换?

android shared-element-transition
1个回答
0
投票

使用ChangeBounds时,您需要转换child and parent元素,过渡才能正常工作。每当元素从左上角进入时(如第二个视频中一样),您就可以假定父视图也没有被过渡。<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" android:duration="375" android:interpolator="@android:interpolator/fast_out_slow_in" android:transitionOrdering="together"> <changeBounds/> <changeImageTransform/> </transitionSet> 我将确保CardView也被视为共享元素,这意味着您将需要更新第二个片段布局,以便ImageView位于CardView内部。

还请注意,每个共享元素都需要一个唯一的transitionName ...这在过去对我造成了问题。

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