Flutter(十八)——支付宝咻一咻动画实践
本文目录
- 咻一咻设计
- 代码实现咻一咻
- 三个动画的实现
- 构建圆
- 透明效果
咻一咻设计
对于支付宝咻一咻功能,是在2016年的时候上线到支付宝的,那个时候好像是专门为了集五福而设计的功能,现在肯定已经不在了,不过这也是一个动画功能,对于实践Flutter动画在合适不过了。(下图是我们最后实现的效果)
首先,我们来看看上图,具体有那些设计,比如它有三个圆圈匀速放大的动画,其次,中间有一个按钮,用户点击之后,就会出现如上动画的效果,ok,也就是这么多,弄清楚几个动画,我们就来实践一下。
代码实现咻一咻
三个动画的实现
对于代码的实现,我们肯定首先实现其3个动画,前面已经讲过了,要实现这种动画的效果,会用到AnimationController,Animation以及Tween,下面我们直接上代码:
AnimationController controller;Animation<double> animation1,animation2,animation3;@overridevoid initState() {// TODO: implement initStatesuper.initState();controller=AnimationController(duration: widget.duration,vsync: this)..repeat();//初始化,动画控制器执行实践为2秒animation1=Tween(begin: 0.0,end: 1.0).animate(CurvedAnimation(parent: controller,curve: const Interval(0.0, 0.5,curve: Curves.linear)))..addListener(()=>setState(()=><String,void>{}));//线性动画animation2=Tween(begin: 0.0,end: 1.0).animate(CurvedAnimation(parent: controller,curve: const Interval(0.25, 0.75,curve: Curves.linear)))..addListener(()=>setState(()=><String,void>{}));//线性动画animation3=Tween(begin: 0.0,end: 1.0).animate(CurvedAnimation(parent: controller,curve: const Interval(0.5, 1.0,curve: Curves.linear)))..addListener(()=>setState(()=><String,void>{}));//线性动画}@overridevoid dispose() {// TODO: implement disposecontroller.dispose();//销毁释放super.dispose();}
每次操作动画,记得控制器一定要销毁,上面有三个动画,分别是(0.0,0.5),(0.25,0.75),(0.5,1.0)三段动画,都是Curves.linear匀速效果。
构建圆
既然我们写好的动画,动画肯定需要执行在组件之上,而我们放大的效果就是圆边框组件,所以我们需要实现一个圆边框组件,代码如下:
Widget _itemBuilder(index){return SizedBox.fromSize(//创建具有指定大小的框size: Size.square(widget.size),//宽高一致child: widget.itemBuidler!=null?widget.itemBuidler(context,index):DecoratedBox(decoration: BoxDecoration(shape: BoxShape.circle,//圆border: Border.all(color: widget.color,width: widget.borderWidth), //指定边框颜色和宽),),);
透明效果
咻一咻不仅仅只有放大的动画效果,在放大的过程之中,圆圈也会慢慢淡去,所以我们还需要实现Opacity组件,而且圆圈都是居中显示叠加的效果,所以我们需要使用到Stack组件,代码如下:
@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("咻一咻功能实现"),),body: Center(child: Stack(alignment: Alignment.center,children: <Widget>[CircleAvatar(backgroundImage: AssetImage("assets/timg.jpg"),radius: 30.0,),Opacity(opacity: 1.0-animation1.value,child: Transform.scale(scale: animation1.value,child: _itemBuilder(0),),),Opacity(opacity: 1.0-animation2.value,child: Transform.scale(scale: animation2.value,child: _itemBuilder(1),),),Opacity(opacity: 1.0-animation3.value,child: Transform.scale(scale: animation3.value,child: _itemBuilder(2),),),],),),);}
Transform.scale是放大的方法,opacity: 1.0-animation3.value,监测透明度的变化,从大到小慢慢消失,中间还有一个按钮组件CircleAvatar,如果想通过点击实现也可以套一层前面介绍的手势组件GestureDetector,监听onTap()属性就行。
到这里,我们就完成了支付宝咻一咻的所有代码,相信用Flutter实现起来还是非常简单的,当然,还有其他代码和一些参数,如下:
class MyHomePage extends StatefulWidget {MyHomePage({Key key,this.title,this.size=500.0,this.borderWidth=16.0,this.itemBuidler,this.duration=const Duration(milliseconds: 1800),this.color=Colors.orange,}) : assert(color!=null),assert(size!=null),assert(borderWidth!=null),super(key: key);final String title;final double size;final double borderWidth;final Color color;final Duration duration;final IndexedWidgetBuilder itemBuidler;@override_MyHomePageState createState() => _MyHomePageState();
}
Flutter(十八)——支付宝咻一咻动画实践相关推荐
- [-Flutter 自组篇-] 蛛网图+绘制+动画实践
在Android的时候自定义过蛛网图,花了半天时间.复刻到Flutter只用了不到20分钟 不得不说Flutter中的Canvas对安卓玩家还是非常友好的,越来越觉得Flutter非常有趣. 在视图方 ...
- Android开发笔记(十八)书籍翻页动画PageAnimation
前面几节的动画都算简单,本文就介绍一个复杂点的动画--书籍翻页动画.Android有自带的翻页动画ViewPager,不过ViewPager只实现了平移效果.即便使用补间组合动画或者属性动画,也只是把 ...
- 深度学习核心技术精讲100篇(三十八)-滴滴司机调度系统实践
前言 随着移动互联网的兴起,网约车逐渐成为了大众常用的一个出行选择.但在网约车平台上经常出现这种情况:有时候乘客抱怨打不到车,与此同时其他地方的司机却没有订单接,长时间空驶.这就是典型的供需不平衡问题 ...
- Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)...
简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View...
Android特效专辑(十二)--仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View 先来看看这个效果 这是我的在Only上添加的效果,说实话,Only现在都还只是半成品,台面都上不了,怪自己技术 ...
- Android仿支付宝咻一咻动画
Android特效专辑(十二)--仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View 先来看看这个效果 这是我的在Only上添加的效果,说实话,Only现在都还只是半成品,台面都上不了,怪自己技术 ...
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View
Android特效专辑(十二)--仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View 先来看看这个效果 这是我的在Only上添加的效果,说实话,Only现在都还只是半成品,台面都上不了,怪自己技术 ...
- Android仿支付宝UI功能开发,Android 自定义view仿支付宝咻一咻功能
支付宝上有一个咻一咻的功能,就是点击图片后四周有水波纹的这种效果,今天也写一个类似的功能. 效果如下所示: 思路: 就是几个圆的半径不断在变大,这个可以使用动画缩放实现,还有透明动画 还有就是这是好几 ...
- 模仿 Android支付宝咻一咻功能实现
下午无聊,之前本来一直想仿写支付宝的咻一咻功能 首先上效果图 然后创建一个自定义的 RounImageView 继承ImageView package com.android.xiong.gridla ...
最新文章
- java tooltips_一款使用纯javacript编写的轻量级tooltips工具
- Oracle:彻底结束会话 ,彻底解锁
- hdu5492(2015合肥网络赛I题)
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- linux字体如何删除不了,如何彻底替换Ubuntu下Chrome字体(清除楷体字)
- 启动zookeeper_架构设计 | 分布式系统调度,Zookeeper集群化管理
- 从零开始编写自己的C#框架(7)——需求分析
- EXCEL 选中单元格并拖动等操作。
- Linux 简单的双线设置
- 为企业选择最合适的SSL证书
- 思科中如何给服务器添加个人信息,使用 RADIUS 服务器进行的外部 Web 身份验证...
- iOS集成OpenCV,并实现图片马赛克
- python枚举详解
- 强化学习(一):简介——什么是强化学习?
- HTB_Secret
- JavaEE企业级实战项目 智牛股第六天 股票交易过程
- 数据库错误代码:1055(Error Number: 1055) 解决方法
- 关于企业邮箱域名备案方法
- 智慧工地管理平台可视化解决方案
- 鸿蒙2000plus,天玑2000plus处理器相当于骁龙的多少