动画开发 之 Lottie

什么是Lottie

Lottie是Airbnb开源的一个动画渲染库,支持多平台,包括iOS、Android、React Native以及Flutter,还有其他平台的 React、Vue、Angular 等等
效果展示:
在这里插入图片描述

动画开发过程

在这里插入图片描述

在AE 中设计动画

打开AE 设计动画
在这里插入图片描述
通过 bodymovin 插件导出 json
在这里插入图片描述
AE制作这里不做具体描述,具体学习下AE Lottie 动画教程
可以在这个网站预览
bodymovin json 动画 预览

没问题在代码中引用
我们以flutter 说明

flutter 中 Lottie 的使用

  • 导入flutter插件
    flutter-Lottie 插件地址
    找到对应的版本
dependencies:lottie: ^1.3.0

在终端执行

flutter pub add lottie

在项目中引用

import 'package:lottie/lottie.dart';

下载资源本地引用

  assets:- assets/kills-corona.json- assets/lottiefiles/angel.zip

完整代码

import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';void main() => runApp(const MyApp());class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(body: ListView(children: [// Load a Lottie file from your assetsLottie.asset('assets/kills-corona.json'),// Load a Lottie file from a remote urlLottie.network('https://rawgit.flutter-io.cn/xvrh/lottie-flutter/master/example/assets/Mobilo/A.json'),// Load an animation and its images from a zip fileLottie.asset('assets/lottiefiles/angel.zip'),],),),);}
}

指定自定义AnimationController,控制动画

import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';/// This example show how to play the Lottie animation in various way:
/// - Start and stop the animation on event callback
/// - Play the animation forward and backward
/// - Loop between two specific frames
///
/// This works by creating an AnimationController instance and passing it
/// to the Lottie widget.
/// The AnimationController class has a rich API to run the animation in various ways.
void main() => runApp(const MyApp());class MyApp extends StatefulWidget {const MyApp({Key? key}) : super(key: key);@override_MyAppState createState() => _MyAppState();
}class _MyAppState extends State<MyApp> with TickerProviderStateMixin {late final AnimationController _controller;@overridevoid initState() {super.initState();_controller = AnimationController(vsync: this)..value = 0.5..addListener(() {setState(() {// Rebuild the widget at each frame to update the "progress" label.});});}@overridevoid dispose() {_controller.dispose();super.dispose();}@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('Animation control'),),body: Column(children: <Widget>[const SizedBox(height: 20),Lottie.asset('assets/kills-corona.json',controller: _controller,height: 300,//控制大小onLoaded: (composition) {setState(() {_controller.duration = composition.duration;});},),Text(_controller.value.toStringAsFixed(2)),Row(mainAxisAlignment: MainAxisAlignment.center,children: [// Play backwardIconButton(icon: const Icon(Icons.arrow_left),onPressed: () {_controller.reverse();},),// PauseIconButton(icon: const Icon(Icons.pause),onPressed: () {_controller.stop();},),// Play forwardIconButton(icon: const Icon(Icons.arrow_right),onPressed: () {_controller.forward();},),],),const SizedBox(height: 30),ElevatedButton(onPressed: () {// Loop between 2 specifics framesvar start = 0.1;var stop = 0.5;_controller.repeat(min: start,max: stop,reverse: true,period: _controller.duration! * (stop - start),);},child: const Text('Loop between frames'),),],),),);}
}

自定义加载
小Lottie部件有几个方便的构造函数(Lottie.asset, Lottie.network, Lottie.memory)来自动加载、解析和缓存 json 文件。

有时您可能更喜欢完全控制文件的加载。用于LottieComposition.fromByteData从字节列表中解析文件。

此示例说明如何从 json 文件加载和解析 Lottie 组合。

class MyWidget extends StatefulWidget {const MyWidget({Key? key}) : super(key: key);@override_MyWidgetState createState() => _MyWidgetState();
}class _MyWidgetState extends State<MyWidget> {late final Future<LottieComposition> _composition;@overridevoid initState() {super.initState();_composition = _loadComposition();}Future<LottieComposition> _loadComposition() async {var assetData = await rootBundle.load('assets/kills-corona.json');return await LottieComposition.fromByteData(assetData);}@overrideWidget build(BuildContext context) {return FutureBuilder<LottieComposition>(future: _composition,builder: (context, snapshot) {var composition = snapshot.data;if (composition != null) {return Lottie(composition: composition);} else {return const Center(child: CircularProgressIndicator());}},);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/53153.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序:动画(Animation)

简单总结一下微信动画的实现及执行步骤。官方文档是这样说的&#xff1a;①创建一个动画实例 animation。②调用实例的方法来描述动画。③最后通过动画实例的 export 方法导出动画数据传递给组件的 animation 属性 图解实现的三步骤&#xff1a; 前两步是定义一个动画并设置都…

动画制作如何实现?看过来 | 万彩动画大师

飞碟说的专题视频曝光量巨大&#xff0c;并能通过广告植入等方式将流量转化为收益&#xff0c;可谓业界标杆。怎么做出飞碟说那类的MG动画&#xff1f;现在就为你揭秘飞碟说动画制作教程&#xff01; 1.确定脚本 何为脚本&#xff1f;所谓脚本就是视频的框架。脚本把控着整个作…

3D建模:现在国漫做出来的动画短片能有多细节?

《落 凡 尘》&#xff1a; 13个人历时8760小时&#xff0c;做出来的动画短片能有多细节&#xff1f; 随着3D技术的深入发展,3D建模被广泛的应用到各行各业中。今天我们以广美2020届动画专业的毕业设计作品为例&#xff0c;了解一下3D建模在动画设计中的运用。 一、人物设计 …

从拳头公司的CG动画讲起:如何让你的动画更有“电影感”

相信热爱游戏的小伙伴肯定知道拳头公司&#xff08;Riot Games&#xff09;&#xff0c;他们不仅成功开发和运营了英雄联盟&#xff0c;在音乐和动画CG这方面做的也是十分的出彩&#xff0c;甚至被网友们戏称为“被游戏耽误了的音乐公司”。这次小趴分享给大家的这篇文章&#…

如何制作 3D 动画短片?

制作3D动画短片真的很有挑战性&#xff0c;特别是如果您是从头开始的话。你需要一堆软件和一群艺术家来将你的想法变为现实&#xff0c;这可能非常昂贵且耗时。 如何制作一部3D动画短片&#xff1f; 在这篇文章中&#xff0c;我们将分解制作 3D 动画短片的过程。在文章的结…

短视频动画制作如何实现?这几个技巧告诉你 | 万彩动画大师

好的图文排版设计能给观众留下深刻的印象。有时候因为内容、构成要素的不同&#xff0c;需要采取多样的排版布局。那么&#xff0c;我们该怎么处理好文字、图片、文字与图片的关系&#xff0c;实现专业、美观的排版&#xff0c;让动画视频具有很好的视觉表现力呢&#xff1f; 以…

动漫配音是怎么制作出来的?除了自己配,还有一个小方法

动漫配音是怎么制作出来的&#xff1f;除了自己配&#xff0c;还有一个小方法 最近刷短视频的时候&#xff0c;经常可以看到一些用动漫声音配音的短视频&#xff0c;本来以为是剪辑动漫人物的声音后制作的&#xff0c;但是其实又有很多话并不是那个动漫人物会说出来的。而在经…

PC Animation 2.0,PPT程控动画开发平台

简介 PPT程控动画开发平台(Program-controlled Animation For PowerPoint)&#xff0c;简称PC Animation&#xff0c;是一款用编程语言生成数值动画的理工课程教学辅助软件。软件提供播放器/播放控件&#xff0c;可将数值交互动画嵌入到PPT文件中&#xff0c;随同PPT一并放映。…

全球首只AIGC动画短片发行,日漫风格超治愈!

文&#xff5c;金磊 发自 凹非寺源&#xff5c;量子位 以后我们看到的动画片&#xff0c;要变味了。 因为它很可能不是人搞的&#xff01; 这不就在最近&#xff0c;Netflix&#xff08;网飞&#xff09;官方发布了一支动画短片《犬与少年》&#xff1a; 这支动画短片讲述了一只…

Cartoon Animator动画制作软件CTA自动保存项目小工具

大家都知道Cartoon Animator动画软件总是会无辜闪退 好不容易K了很多帧&#xff0c;然后崩溃立马回到解放前。 做了这个小工具暂时解决一下燃眉之急&#xff01;&#xff01;&#xff01;&#xff01; 下载地址&#xff1a; https://download.csdn.net/download/dmxayjn/8523…

通过这些工具,轻松制作动画短片 | 万彩动画大师

动画发展至今&#xff0c;已经形成了一种独特的文化&#xff0c;它所表现出来的想象力和创造力是无与伦比的&#xff0c;动画也是一种艺术。制作动画的方式多种多样&#xff0c;下面介绍3款免费神器&#xff0c;让短片动画制作不再是难事。动画界不断涌现优秀人才&#xff0c;下…

Animate动画

一个有趣的&#xff0c;跨浏览器的 css3 动画库。 Animate.css 安装 npm install animate.css --save main.js中引用。import animate from animate.css Vue.use(animate) 使用 方式一&#xff1a;HTML标签中添加class。缺点&#xff1a;页面加载后就开始方式二&#xff1a;…

Animation Rigging创建模板动画(一)

什么是模板动画&#xff1f;模板对于熟悉C、C#、Java编程的开发者可能都不陌生&#xff0c;在Unity中也经常使用同一个函数带上<>来返回指定的对象&#xff0c;这些都是模板类或函数的使用。简单来说&#xff0c;模板类或函数定义了一套处理方法的过程&#xff0c;而不具…

大公开!动画制作只需要拥有这几款工具!

原创 Amazing10 业余码农 目录 大公开&#xff01;动画制作只需要拥有这几款工具&#xff01; 1 PPT / Keynote 2 Synifg Studio 3 Adobe Animate 4 FlipaClip 5 3DSMax / Maya / C4D / Blender 6 总结 在如今的社会&#xff0c;信息流已经非常泛滥。从 3G 时代流…

Chrome谷歌浏览器ImTranslator翻译插件安装使用教程

下载地址&#xff1a;https://www.chrome666.com/chrome-extension/imtranslator.html 安装 &#xff0c; 若安装报错&#xff0c;请看https://www.cnplugins.com/zhuanti/newinstall.html ImTranslator 插件设置 第一种翻译方式&#xff1a; 翻译后&#xff1a; 第二种翻译…

房地产行业指导方案

2020年伊始&#xff0c;受新冠疫情影响&#xff0c;房企销售均价普遍下滑&#xff0c;房地产行业陷入市场低迷阶段。随着疫情的平稳&#xff0c;房地产投资和销售市场正逐渐复苏&#xff0c;并借助线上营销迸发出新的活力&#xff0c;再现线上营销在房产领域的巨大能量。 房地…

2014房地产行业微信运营

2014房地产行业微信运营 目前&#xff0c;随着微信、微博用户的激增&#xff0c;各行各业都看到了微信营销的潜力&#xff0c;纷纷试水微信或微博营销&#xff0c;房地产行业亦是其中之一。对于房地产微信、微博营销方案的策划者来说&#xff0c;首先需要了解房地产的行业背景…

项目方案汇报,如何对甲方,专家和领导“投其所好”?

身为设计方的你有没有这样的经历&#xff1a; 1. 一个非常优秀的方案未能被甲方采纳&#xff0c;反而甲方选择了一个不如自己的方案&#xff0c;造成了很大的遗憾&#xff1b; 2. 在讲述自己的设计方案的时候&#xff0c;经常越说越散&#xff0c;甚至到了最后自己都不知道说…

OpenAI宣布安卓版ChatGPT正式上线;一站式 LLM底层技术原理入门指南

&#x1f989; AI新闻 &#x1f680; OpenAI宣布安卓版ChatGPT正式上线 摘要&#xff1a;OpenAI今日宣布&#xff0c;安卓版ChatGPT已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已可在谷歌Play商店下载&#xff0c;并计划在下周拓展到更多地区。Chat…

GPT-4——比GPT-3强100倍

GPT-4——比GPT-3强100倍 当前世界上最强大的人工智能系统当属ChatGPT。推出2个月用户数就突破1亿。ChatGPT是当下最炙手可热的话题&#xff0c;科技圈几乎人人都在讨论。这边ChatGPT的热度还在不断攀升&#xff0c;另一边来自《纽约时报》的最新报道称ChatGPT即将被自家超越&…