Flutter开发之——动画-Rive
一 概述
- Rive是Flare的升级版本,是一个实时交互设计和动画工具。
- 文件的后缀名是
.riv
,加载动画时使用的是Rive Flutter runtime - Rive支持跨平台,支持Web,IOS,Android,Flutter,C++等终端
二 Rive
2.1 仓库地址
Rive:https://github.com/rive-app/rive-flutter
2.2 插件地址
rive 0.7.9:https://pub.dev/packages/rive
2.3 插件的安装及卸载
插件安装
打开CMD终端,执行如下指令(自动添加pubspec.yaml依赖)
flutter pub add rive
插件卸载
打开CMD终端,执行如下指令(pubspec.yaml依赖被删除)
flutter pub remove rive
三 Rive素材
3.1 素材资源
https://rive.app/community/
3.2 素材下载
在素材页面,选择素材进入详情页,选择右侧的
Open in Preview Player
打开查看可供执行的Animation(如图:Walk,Hit,In)
返回素材详情页进行下载(下载后的文件名为
205-467-zombie-character.riv
可改名为zombie.riv
)
四 示例
4.1 添加Riv依赖(assets下所有文件)
assets:- images/- assets/
4.2 代码(通过设置不同名称,显示动画效果)
class _MyHomePageState extends State<MyHomePage>
{//riveArtboard _riveArtboard;RiveAnimationController _controller;bool get isPlaying => _controller?.isActive ?? false;@overridevoid initState() {super.initState();rootBundle.load("assets/zombie.riv").then((value) async {final file = RiveFile.import(value);final artboard = file.mainArtboard;artboard.addController(_controller = SimpleAnimation('idle'));setState(() => _riveArtboard = artboard);});}@overrideWidget build(BuildContext context) {return Scaffold(body: Column(children: [Flexible(child: _riveArtboard == null ? Container(color: Colors.blue,) : Rive(artboard:_riveArtboard, alignment:Alignment.center, fit:BoxFit.contain, )),Column(mainAxisAlignment:MainAxisAlignment.start,crossAxisAlignment: CrossAxisAlignment.center,children: [RaisedButton(child: Text("Walk"),onPressed: (){setState(() { _riveArtboard.addController(_controller = SimpleAnimation('Walk'));});}),RaisedButton(child: Text("Hit"),onPressed: (){setState(() { _riveArtboard.addController(_controller = SimpleAnimation('Hit'));});}),RaisedButton(child: Text("In"),onPressed: (){setState(() {_riveArtboard.addController(_controller = SimpleAnimation('In'));});})],)],),floatingActionButton: FloatingActionButton(onPressed: _togglePlay,tooltip: isPlaying ? 'Pause' : 'Play',child: Icon(isPlaying ? Icons.pause : Icons.play_arrow,),));}void _togglePlay() {setState(() => _controller.isActive = !_controller.isActive);}
}
4.3 效果图
Flutter开发之——动画-Rive相关推荐
- Flutter开发之——动画,移动终端软件开发
vsync: this, lowerBound: 0, upperBound: 1, duration: Duration(milliseconds: 1000), ) //动画开始和结束值 anim ...
- Flutter开发之——动画-Gif动画
一 概述 Image组件支持加载GIF图片 GIF本身是一种动态的图片,其中定义了每一帧的播放时长和动画的总时长 二 添加GIF 2.1 素材 2.2 添加GIF 将素材添加到images文件夹中 在 ...
- flutter 移动通知_Flutter开发之动画
动画作为产品的重要组成部分,是提升用户体验的重要方式,一个恰当的动画不仅能够缓解用户因为等待而带来的情绪焦躁,还会增加应用的整体用户体验.因此,在应用中增加动画的相关功能,可以增强用户的粘性. 动画的 ...
- Flutter开发——动画原理及核心类
动画的原理 实际上动画是一段连续的画面,也叫做"动起来的画面",这些画面是由一连串静态的图片组成的,而一个动画画面又叫做"动画帧". 帧又被分为关键帧和过渡帧, ...
- Flutter开发之官网的第一个例子实现(46)
参考: 编写您的第一个 Flutter App Flutter开发我的收藏列表 准备数据:列表数据使用数组存储,选中的数据可以使用Set存储(因为set可以自动去重). 界面列表:使用ListView ...
- 【Flutter】Animation 动画 ( AnimatedBuilder 动画使用流程 | 创建动画控制器 | 创建动画 | 创建动画作用的组件 | 关联动画与组件 | 动画执行 )
文章目录 ◯.AnimatedBuilder 引入 一.创建动画控制器 二.创建动画 三.创建动画作用的组件 四.创建 AnimatedBuilder 关联动画与组件 五.动画运行 六.完整代码示例 ...
- Flutter开发系列教程
flutter Developers Demo 不定期分享Flutter开发资讯与教程 文章地址github.com/flyou/flutt- 本人时间有限,并不能保证定期更新,但是不定期更新是肯定的 ...
- Flutter开发日常练习-小猫咪杂货店(新增欢迎页,广告页和侧滑页面)
养小猫咪的伙伴来我的店铺逛逛吧!抖音商城搜索#早睡早起的猫咪小铺子 Flutter开发日常练习-小猫咪杂货店(新增动画和跳转抖音)_workersJiaDa的博客-CSDN博客URL Launcher ...
- Flutter 数字增加动画
在移动应用开发中,流畅的动画不仅可以给人留下美好的印象,还可以提高用户体验.在Flutter开发中,官方提供了简洁且强大的动画API,比较核心的有AnimationController和Animati ...
最新文章
- 使用 JMeter 进行压力测试
- centos7通过yum升级内核到最新版本
- 【SSL】java keytool工具创建自己的(localhost)(JKS)证书库
- 322. 零钱兑换 golang 动态规划
- JQuery Datatables —— 自定义导出列
- 求f(x,n)(信息学奥赛一本通-T1166)
- python字符的大小比较_python中字符串怎么比较大小
- 防止开源的加拉帕戈斯综合症,系统软件和开源都是手段不是目的
- 华为HMS核心服务全面开放 赋能开发者共筑智慧新生态
- eclipse git拉取失败_Git(四):分支
- Coprime Sequence
- Android6,androidstudio游戏开发教程
- linux课程以及Linux主要学习哪些内容
- 2022骨传导蓝牙耳机推荐,最好用的几款骨传导耳机
- 关于win7 出现两个本地连接不能上网的问题?
- 30ea是什么意思_数量单位EA是什么意思?EACH? 单位EA是什么意思
- PS 的形状工具的布尔运算
- 详解created和mounted区别与使用场景
- n皇后问题-回溯法求解
- k8s里面的iptables和ipvs有什么区别?怎么选?为什么选择ipvs