02導入ガイド

プレーヤーを iOS / Android / Web / Flutter / HarmonyOS に導入

以下のインストール手順とサンプルコードは各プロジェクトの公式 README から整理したものです。完全なパラメーター、最新バージョン、変更内容は各リポジトリを参照してください。

01

CocoaPods · Objective-C

iOS

ネイティブの CoreAnimation で描画し、アプリバンドルまたはリモートサーバーから SVGA ファイルを読み込めます。

インストール

Podfile に依存関係を追加し、pod install を実行します。

インストール
Ruby
target 'MyApp' do
  pod 'SVGAPlayer', '~> 2.3'
end

再生

SVGAPlayer と SVGAParser を作成し、解析完了後に videoItem を設定して再生を開始します。

再生
Objective-C
SVGAPlayer *player = [[SVGAPlayer alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[self.view addSubview:player];

SVGAParser *parser = [[SVGAParser alloc] init];
[parser parseWithNamed:@"posche" inBundle:nil completionBlock:^(SVGAVideoEntity *videoItem) {
    if (videoItem != nil) {
        player.videoItem = videoItem;
        [player startAnimation];
    }
} failureBlock:nil];

補足

  • リモートサーバーから読み込む場合は parseWithURL:completionBlock:failureBlock: を使用します。
  • 画像の動的な差し替え、テキストの追加、要素の非表示、カスタム描画に対応しています。詳細はリポジトリの Wiki を参照してください。
02

Gradle · JitPack · Kotlin

Android

ネイティブの Android Canvas で描画し、assets またはリモートサーバーからアニメーションを読み込めます。

インストール

ルートの build.gradle に JitPack リポジトリを追加し、app/build.gradle に依存関係を追加します。

インストール
Gradle
// root build.gradle
allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

// app/build.gradle
implementation 'com.github.svga:SVGAPlayer-Android:2.6.1'

再生

レイアウトに SVGAImageView を追加し、アニメーションリソースを指定して自動再生を有効にします。

再生
XML
<com.opensource.svgaplayer.SVGAImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:source="posche.svga"
    app:autoPlay="true" />

補足

  • SVGAParser のシングルトンを使用する前に SVGAParser.shareParser().init(context) を呼び出す必要があります。
  • 難読化する場合は com.squareup.wire.** と com.opensource.svgaplayer.proto.** を保持してください。
  • README のサンプルにある compile は旧版 Gradle の記法です。新しいプロジェクトでは implementation を使用します。
03

npm / CDN · JavaScript

Web

機能が充実した Web プレーヤーです。SVGA 1.x(JSZip が必要)、音声再生、IE 互換モードに対応しています。

インストール

npm でインストールするか、CDN のビルドを直接読み込みます。

インストール
Shell
npm install svgaplayerweb --save

<!-- または直接読み込み -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/svga.min.js"></script>

再生

コンテナーを用意し、Player と Parser を作成してアニメーションを読み込んだ後に再生します。

再生
HTML
<div id="demoCanvas"></div>

<script>
  const player = new SVGA.Player('#demoCanvas');
  const parser = new SVGA.Parser('#demoCanvas');
  parser.load('rose.svga', (videoItem) => {
    player.setVideoItem(videoItem);
    player.startAnimation();
  });
</script>

補足

  • SVGA 1.x に対応するには JSZip を追加で読み込む必要があります。音声を再生するには howler.js を読み込みます。
  • より小さなサイズが必要な場合は Web Lite を使用してください。
04

npm / CDN · TypeScript

Web Lite

モバイル Web 向けの軽量プレーヤーです。サイズは 60 KB 未満(gzip で 18 KB 未満)で、WebWorker を使って解析します。

インストール

npm でインストールするか、unpkg の CDN ビルドを使用します。

インストール
Shell
npm i svga

<!-- または直接読み込み -->
<script src="https://unpkg.com/svga/dist/index.min.js"></script>

再生

Parser を作成してアニメーションを読み込み、canvas にマウントして再生を開始します。

再生
TypeScript
import { Parser, Player } from 'svga'

const parser = new Parser()
const svga = await parser.load('xx.svga')

const player = new Player(document.getElementById('canvas'))
await player.mount(svga)
player.start()

補足

  • SVGA 1.x 形式と音声再生には対応していません。
  • Android 4.4+ / iOS 9+ に対応しています。
05

pub.dev · Dart

Flutter

CustomPainter をベースにした Flutter 実装で、ローカルの assets またはリモートサーバーからアニメーションを読み込めます。

インストール

pubspec.yaml に依存関係を追加します。

インストール
YAML
dependencies:
  svgaplayer_flutter: ^2.0.0

再生

最も簡単な方法は SVGASimpleImage を使うことです。細かい制御が必要な場合は SVGAAnimationController を使用します。

再生
Dart
SVGASimpleImage(
  resUrl: 'https://github.com/svga/SVGA-Samples/blob/master/angel.svga?raw=true',
)

補足

  • SVGA 2.0 形式のみに対応しています。
  • リソースのキャッシュは dio などのライブラリで別途処理し、キャッシュデータは SVGAParser のバイトデコードメソッドで処理する必要があります。
06

OHPM · ArkTS

HarmonyOS

HarmonyOS NEXT 向けの SVGA プレーヤーで、宣言型 UI 1.0 / 2.0 コンポーネントを提供します。

インストール

OHPM でインストールします。

インストール
Shell
ohpm install @tb-open/svga

再生

SVGA を初期化し、コントローラーを作成して SvgaPlayerV2 でアニメーションを描画します。

再生
ArkTS
import { Svga, SvgaController, SvgaPlayerV2 } from '@tb-open/svga'

// AbilityStage.onCreate
Svga.init(this.context)

private controller: SvgaController = new SvgaController({
  loops: 3,
  fillMode: 'forwards',
  autoRelease: true,
  clearsAfterStop: true
})

SvgaPlayerV2({
  url: $r('app.media.example_animation'),
  controller: this.controller
})
  .width(300)
  .height(150)

補足

  • アプリリソース、リモート URL、サンドボックス内のファイルパスに対応しています。
  • コントローラーで再生の制御、画像やテキストの差し替え、再生進捗とクリックイベントの監視ができます。