SVGA Flutter v1.0 全新的動畫格式

介紹

SVGAPlayer 是一個輕量的動畫渲染庫。你能夠使用工具Adobe Animate CC 或者 Adobe After Effects 中導出動畫文件,而後使用 SVGAPlayer 在移動設備上渲染並播放。html

SVGAPlayer-Android 使用原生 Android Canvas 庫渲染動畫,爲你提供高性能、低開銷的動畫體驗。git

若是你想要了解更多細節,請訪問官方網站github

  • SVGAPlayer-Flutter 只支持 2.0 版本格式.

用法

咱們在這裏介紹 SVGAPlayer-Android 的用法。想要知道如何導出動畫,點擊這裏緩存

添加依賴

dependencies:
  svgaplayer_flutter: ^0.0.1  #latest version
複製代碼

放置 svga 文件

SVGAPlayer 能夠從本地 assets 目錄,或者遠端服務器上加載動畫文件。bash

簡易用法

使用 SVGASimpleImage 組件進行動畫渲染是最簡單的。服務器

class MyWidget extends Widget {

  @override
  Widget build(BuildContext context) {
    return Container(
      child: SVGASimpleImage(
          resUrl: "https://github.com/yyued/SVGA-Samples/blob/master/angel.svga?raw=true"),
    );
  }

}
複製代碼

動畫將會循環播放,若是你但願更直接地控制動畫,能夠使用代碼方式。網絡

使用代碼

爲了控制動畫的渲染操做,你須要建立一個 SVGAAnimationController 實例,這和普通的 Flutter 動畫並無什麼區別。將這個實例賦予 SVGAImage,使用 SVGAParser 加載並解碼資源,而後使用 Controller 播放動畫。async

import 'package:flutter/material.dart';
import 'package:svgaplayer_flutter/svgaplayer_flutter.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
  SVGAAnimationController animationController;

  @override
  void initState() {
    this.animationController = SVGAAnimationController(vsync: this);
    this.loadAnimation();
    super.initState();
  }

  @override
  void dispose() {
    this.animationController.dispose();
    super.dispose();
  }

  void loadAnimation() async {
    final videoItem = await SVGAParser.shared.decodeFromURL(
        "https://github.com/yyued/SVGA-Samples/blob/master/angel.svga?raw=true");
    this.animationController.videoItem = videoItem;
    this
        .animationController
        .repeat() // Try to use .forward() .reverse()
        .whenComplete(() => this.animationController.videoItem = null);
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: SVGAImage(this.animationController),
    );
  }
}
複製代碼

緩存

動畫庫不會管理任何緩存,你須要使用 dio 等網絡庫自行處理。ide

使用 SVGAParser.decodeFromBytes 方法解碼數據。svg

功能示例

相關文章
相關標籤/搜索