当前位置: 首页 > news >正文

Flutter - 波浪动画和lottie动画的使用

demo 地址: https://github.com/iotjin/jh_flutter_demo
代码不定时更新,请前往github查看最新代码

波浪动画三方库wave

lottie动画
Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。具有丰富的动画效果和交互功能。

  # 波浪动画 https://pub-web.flutter-io.cn/packages/wavewave: ^0.2.2# lottie动画 https://pub-web.flutter-io.cn/packages/lottielottie: ^2.4.0

效果图

在这里插入图片描述

在这里插入图片描述

波浪动画示例

class WavePage extends StatelessWidget {const WavePage({Key? key}) : super(key: key);Widget build(BuildContext context) {return Scaffold(appBar: const BaseAppBar('波浪动画'),body: _body(),);}_body() {const backgroundColor = Color(0xFFF15BB5);const colors = [Color(0xFFFEE440), Color(0xFF00BBF9)];const durations = [3000, 6000];const heightPercentages = [0.65, 0.66];var waveView = WaveWidget(config: CustomConfig(colors: colors,durations: durations,heightPercentages: heightPercentages,),backgroundColor: backgroundColor,size: const Size(double.infinity, double.infinity),waveAmplitude: 0,);return waveView;}
}

lottie动画示例

需要先准备好加载动画文件:将预先准备好的Lottie动画文件(.json格式)放入flutter项目的资源目录中。可以从Lottie官网下载或创建自定义动画文件。
然后使用 Lottie.asset('assets/xxx.json')加载Widget

import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
import '/project/configs/project_config.dart';class LottiePage extends StatefulWidget {const LottiePage({Key? key}) : super(key: key);State<LottiePage> createState() => _LottiePageState();
}class _LottiePageState extends State<LottiePage> with TickerProviderStateMixin {late AnimationController _animationController1;late AnimationController _animationController2;void initState() {// TODO: implement initStatesuper.initState();_init();}_init() {_animationController1 = AnimationController(vsync: this, duration: const Duration(seconds: 1));_animationController2 = AnimationController(vsync: this, duration: const Duration(seconds: 1));}_startAnimation1() {_animationController1..reset()..forward();}_startAnimation2() {_animationController2..reset()..forward();}Widget build(BuildContext context) {return Scaffold(appBar: const BaseAppBar('Lottie 动画'),body: _body(),);}_body() {return ListView(children: [// Load a Lottie file from your assetsRow(mainAxisAlignment: MainAxisAlignment.center,children: [Lottie.asset('assets/lottie/首页.json', width: 50, height: 50),Lottie.asset('assets/lottie/星球.json', width: 65, height: 65),],),Row(mainAxisAlignment: MainAxisAlignment.center,children: [GestureDetector(onTap: () => _startAnimation1(),child: Lottie.asset('assets/lottie/首页.json',width: 50,height: 50,controller: _animationController1,onLoaded: (composition) => _startAnimation1(),),),GestureDetector(onTap: () => _startAnimation2(),child: Lottie.asset('assets/lottie/星球.json',width: 65,height: 65,controller: _animationController2,onLoaded: (composition) => _startAnimation2(),),),],),Lottie.asset('assets/lottie/Aniki Hamster.json', height: 200),// Load a Lottie file from a remote urlLottie.network('https://assets5.lottiefiles.com/packages/lf20_0LNPii4uOv.json'),],);}
}
http://www.lryc.cn/news/187457.html

相关文章:

  • 忘记压缩包密码?解决方法一键找回,省时又便捷!
  • “UTONMOS”掀起元宇宙游戏热潮,全球发展前景广阔
  • 用idea工具scala 和 Java开发 spark案例:WordCount
  • 【git merge/rebase】详解合并代码、解决冲突
  • nrm,npm源的管理工具
  • HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Stack
  • 腾讯云2核4G服务器一年和三年价格性能测评
  • 集线器、交换机、路由器是如何转发包的
  • 交通物流模型 | MDRGCN:用于多模式交通客流预测的深度学习模型
  • 保研经历分享(一)
  • 【手写数字识别】数据挖掘实验二
  • 什么是云计算?云计算简介
  • Vue路由进阶--VueRouter声明式导航
  • Oracle 云服务即将支持 PostgreSQL!
  • 数字孪生项目:突破技术难关,引领未来发展
  • MySQL 如何使用离线模式维护服务器
  • 期权开户流程合集——期权开户的操作步骤
  • mysql改造oracle,以及项目改造
  • 利用互斥锁实现多个线程写一个文件
  • 【m98】视频缓存PacketBuffer 1 : SeqNumUnwrapper int64映射、ForwardDiff
  • day58:ARMday5,GPIO流水灯实验
  • Linux shell编程学习笔记9:字符串运算 和 if语句
  • 【分享】xpath的属性表达式
  • Oracle Dataguard跨版本数据迁移(11.2.0.4~19.13.0.0)
  • 零基础Linux_14(基础IO_文件)缓冲区+文件系统inode等
  • Vue中的router路由的介绍(快速入门)
  • ESP-07S进行TCP 通信测试
  • 如何找到新媒体矩阵中存在的问题?
  • MongoDB-基本常用命令
  • Linux 常用systemctl service 脚本