Flutter自定义实现神奇动效的卡片切换视图

本文介绍了使用Flutter重写Android卡片切换效果的过程,详细讲解了思路、组件结构、动画实现和自定义动效。通过Animation和AnimationController实现卡片的平滑过渡,提供了核心代码示例,适合希望学习Flutter动画开发的读者。

前言

这一段时间,Flutter的势头是越来越猛了,作为一个Android程序猿,我自然也是想要赶紧尝试一把。在学习到动画的这部分后,为了加深对Flutter动画实现的理解,我决定把之前写的一个卡片切换效果的开源小项目,用Flutter“翻译”一遍。

废话不多说,先来看看效果吧:

Android iOS

Github地址:https://github.com/BakerJQ/Flutter-InfiniteCards

思路

首先,关于卡片的层叠效果,在原Android项目中,是通过Scale差异以及TranslationY来体现的,Flutter可以继续采用这种方式。

其次,对于自定义卡片的内容,原Android项目是通过Adapter实现,对于Flutter,则可以采用IndexedWidgetBuilder实现。

最后,就是自定义动效的实现,原Android项目是通过一个0到1的ValueAnimator来定义动画的展示过程,而Flutter中,正好有与之对应的Animation和AnimationController,如此我们就可以直接自定义一个动画过程中,具体的视图展示方式。

组件总览

由于卡片视图需要根据动画情况进行渲染,所以显然是一个StatefulWidget。

同时,我们给出三种基本的动画模式:

enum AnimType {
  TO_FRONT,//被选中的卡片通过自定义动效移至第一,其他的卡片通过通用动效补位
  SWITCH,//选中的卡片和第一张卡片互换位置,并都是自定义动效
  TO_END,//第一张图片通过自定义动效移至最后,其他卡片通过通用动效补位
}

并通过Helper和Controller来处理所有的动画逻辑

其中Controller由构造方法传入


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值