如何在滑动时为全屏照片转换设置动画,就像在 Telegram 中一样?
How to animate fullscreen photo transition on swipe, like in Telegram?
当您垂直滑动时,图像会被拖向滑动方向,并带有黑色背景的淡出动画。
释放后,它会顺利 returns 回到屏幕上之前的位置,就像英雄动画一样。
如何使用 Flutter 重现这种效果?同样的场景,在全屏照片视图中。
photo_view 全屏需要包,因此它不应干扰缩放。
您实际上需要的是一个开箱即用的小部件,而且它非常易于使用。它被称为Hero
。基本上,您将想要设置动画的小部件包装在 Hero
小部件中,并使用特定的 tag
字符串,并且当您导航到另一个屏幕时,将目标小部件包装在另一个 [=10] 中=] 使用相同的标签。通过将具有相同照片的两个小部件用 Hero
包裹在不同的 PageRoute
中,可以实现与您分享的效果类似的效果。
查看这篇 Flutter widget of the week video to get you started, and this Flutter.dev 文章,了解有关 Hero
小部件的更详细说明。
编辑:我看到您正在寻找更具体的图像查看器行为。然后,我建议您使用 photo_view package,它包含许多可视化图像的功能,包括带有滑动-向下-关闭行为的英雄转换、捏合缩放等。
我找到了解决方案。
要创建这样的动画,您应该使用 extended_image 包,其中有 SlideOutPage
用于创建此类过渡的小部件。
当您垂直滑动时,图像会被拖向滑动方向,并带有黑色背景的淡出动画。 释放后,它会顺利 returns 回到屏幕上之前的位置,就像英雄动画一样。
如何使用 Flutter 重现这种效果?同样的场景,在全屏照片视图中。 photo_view 全屏需要包,因此它不应干扰缩放。
您实际上需要的是一个开箱即用的小部件,而且它非常易于使用。它被称为Hero
。基本上,您将想要设置动画的小部件包装在 Hero
小部件中,并使用特定的 tag
字符串,并且当您导航到另一个屏幕时,将目标小部件包装在另一个 [=10] 中=] 使用相同的标签。通过将具有相同照片的两个小部件用 Hero
包裹在不同的 PageRoute
中,可以实现与您分享的效果类似的效果。
查看这篇 Flutter widget of the week video to get you started, and this Flutter.dev 文章,了解有关 Hero
小部件的更详细说明。
编辑:我看到您正在寻找更具体的图像查看器行为。然后,我建议您使用 photo_view package,它包含许多可视化图像的功能,包括带有滑动-向下-关闭行为的英雄转换、捏合缩放等。
我找到了解决方案。
要创建这样的动画,您应该使用 extended_image 包,其中有 SlideOutPage
用于创建此类过渡的小部件。