UNPKG

rn-newarch-svga-player

Version:

这是一款使用ReactNative Fabric新架构加载Svga动画的开源插件

144 lines (108 loc) 5.47 kB
## **这是一款使用 ReactNative 新架构 加载`Android/iOS` Svga 动画的开源插件**[三端 Svga 动画统一使用点击这里](https://github.com/yrjwcharm/react-native-ohos/tree/feature/rnoh/svgaplayer) > ### 版本:latest <p align="center"> <h1 align="center"> <code>rn-newarch-svga-player</code> </h1> </p> <p align="center"> <a href="https://github.com/wonday/react-native-pdf/blob/master/LICENSE"> <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License" /> </a> </p> > [!TIP] [Github 地址](https://github.com/yrjwcharm/rn-newarch-svga-player) ## 安装与使用 > [!TIP] 注意 ⚠️ 本库 android/ios 仅给予 Fabric 新架构 支持,旧架构不在跟进,若需旧架构支持请移步<https://github.com/yrjwcharm/react-native-svga-player> #### **npm** ```bash npm install rn-newarch-svga-player ``` #### **yarn** ```bash yarn add rn-newarch-svga-player ``` > 若想更改库的别名 react-native-svga-player 来导入。你则需要把 rn-newarch-svga-player 库修改下,重新 yarn 执行 ```diff + "dependencies": { "@react-native-oh/react-native-harmony": "0.72.48", "patch-package": "^8.0.0", "postinstall-postinstall": "^2.1.0", "react": "18.2.0", "react-native": "0.72.5", - "rn-newarch-svga-player":"^latest" + "react-native-svga-player":"npm:rn-newarch-svga-player@latest" }, ``` android 需要 ```bash ./gradlew generateCodegenArtifactsFromSchema ``` ios 需要 ```bash cd ios bundle install && bundle exec pod install ``` ### ios react-native 0.76 以上 AppDelegate.mm 需要显示注册该组件 ```diff #import "AppDelegate.h" #import "RCTSvgaPlayer.h" #import <React/RCTBundleURLProvider.h> #import <React/RCTBridge+Private.h> @implementation AppDelegate // ... + - (NSDictionary<NSString *,Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents + { + NSMutableDictionary * dictionary = [super thirdPartyFabricComponents].mutableCopy; + dictionary[@"RNSvgaPlayer"] = [RCTSvgaPlayer class]; + return dictionary; + } @end ``` ## API 参考 ### Props | 属性 | 类型 | 默认值 | 描述 | | ----------------- | ------------------------- | ----------- | ----------------------------------------------------- | | `source` | `SvgaSource` | - | SVGA 文件源 | | `autoPlay` | `boolean` | `true` | 是否自动播放 | | `loops` | `number` | `0` | 循环播放次数,默认值:0 表示无限循环 | | `clearsAfterStop` | `boolean` | `true` | 动画停止后是否清空画布 | | `fillMode` | `'Forward' \| 'Backward'` | `'Forward'` | 填充模式:Forward 停留在最后一帧,Backward 回到第一帧 | | `onFinished` | `function` | - | 播放完成时的回调函数 | | `onFrame` | `function` | - | 帧变化时的回调函数 | | `onPercentage` | `function` | - | 播放进度变化时的回调函数 | ### Ref 方法 | 方法 | 描述 | | ---------------------------------------------------- | ----------------------------------------------- | | `startAnimation()` | 从第 0 帧开始播放动画 | | `startAnimationWithRange(location, length, reverse)` | 在指定范围内播放动画,可选择反向播放 | | `pauseAnimation()` | 暂停动画,停留在当前帧 | | `stopAnimation()` | 停止动画,根据 clearsAfterStop 决定是否清空画布 | | `stepToFrame(frame, andPlay)` | 跳转到指定帧,可选择是否从该帧开始播放 | | `stepToPercentage(percentage, andPlay)` | 跳转到指定百分比位置 (0.0-1.0),可选择是否播放 | 下面的代码展示了这个库的基本使用场景: ```js import React from "react"; import { View, Dimensions, StyleSheet } from "react-native"; import { RNSvgaPlayer } from "react-native-svga-player"; export function App() { return ( <RNSvgaPlayer source="https://raw.githubusercontent.com/yyued/SVGAPlayer-iOS/master/SVGAPlayer/Samples/Goddess.svga" style={{ width: 300, height: 150, }} /> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: "flex-start", alignItems: "center", }, }); ``` 更多详情用法参考 [三端 Svga 动画统一使用点击这里](https://github.com/yrjwcharm/react-native-ohos/tree/feature/rnoh/svgaplayer) #### 开源不易,希望您可以动一动小手点点小 ⭐⭐ #### 👴 希望大家如有好的需求踊跃提交,如有问题请提交 issue,空闲时间会扩充与修复优化 ## 开源协议 本项目基于 [The MIT License (MIT)](https://github.com/yrjwcharm/react-native-ohos-svgaplayer/blob/master/LICENSE) ,请自由地享受和参与开源。