打赏

SVGAndroid

使用 SVGAPlayer 在 Android、iOS、Web中播放 After Effects / Animate CC (Flash) 动画

1.

 maven { url 'https://jitpack.io' }

2.

implementation 'com.github.yyued:SVGAPlayer-Android:2.0.0'

3.

复制代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.opensource.svgaplayer.SVGAImageView
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        app:source="posche.svga"
        app:autoPlay="true"
        android:background="#000" />
</RelativeLayout>
复制代码

4.

SVGAImageView imageView = new SVGAImageView(this);

5.

复制代码
parser = new SVGAParser(this);
parser.parse(new URL(url地址), new SVGAParser.ParseCompletion() {
    @Override
    public void onComplete(@NotNull SVGAVideoEntity videoItem) {
        SVGADrawable drawable = new SVGADrawable(videoItem);
        imageView.setImageDrawable(drawable);
        imageView.startAnimation();
    }
    @Override
    public void onError() {
    }
});
复制代码

实际使用中 内存在一直上升 并没有向glide一样做缓存 所以需要设置缓存

val cacheDir = File(context.applicationContext.cacheDir, "http")
HttpResponseCache.install(cacheDir, 1024 * 1024 * 128)

属性

setLoops (int循环);-循环计数,0 =无限循环
setClearsAfterStop(布尔clearsAfterStop);动画停止后清除画布
setFillMode (FillMode FillMode);-可选的前进/后退,fillMode =前进,动画将在最后一帧结束时暂停,fillMode =后退,动画将在第一帧暂停。
setCallback(SVGAPlayerCallback) -设置回调
setVideoItem(SVGAVideoEntity videoItem)设置动画实例
方法

startAnimation() -从0帧播放动画。
Pause() -暂停动画并保持当前帧。
停止动画,清除画布,而clearsAfterStop == YES。
stepToFrame(int frame, boolean andPlay) -步进到N帧,然后播放动画,如果andPlay === true。
stepToPercentage(float percentage, boolean andPlay) - Step to x%,然后当andPlay === true时播放动画。
SVGAPlayerCallback

void onPause() -在动画暂停后调用。
void onFinished() -在动画完成后调用。
void onRepeat() -在动画重复时调用。
void onStep(int frame, float percentage) -在动画播放后调用特定的帧。

6.SVGAPlayer 支持动态图像和动态文本,要添加动态图像和动态文本,你需要创建一个 SVGADynamicEntity 对象,并传入 SVGDrawable 初始化方法

SVGADynamicEntity dynamicItem = new SVGADynamicEntity();
SVGADrawable drawable = new SVGADrawable(videoItem, dynamicItem);

您需要创建一个位图实例,使用setDynamicImage方法,来替换特定的图像。要求设计人员提供imageKey(或解压缩svga文件

dynamicItem.setDynamicImage(bitmapDrawable, "99");

使用setDynamicText方法,在特定的图像上添加文本。要求设计人员提供imageKey(或解压缩svga文件)。

TextPaint textPaint = new TextPaint();
textPaint.setTextSize(30);
textPaint.setFakeBoldText(true);
textPaint.setARGB(0xff, 0xff, 0xe0, 0xa4);
textPaint.setShadowLayer((float)1.0, (float)0.0, (float)1.0, Color.BLACK); // 各种配置
dynamicItem.setDynamicText("崔小姐不吃鱼 送了魔法奇缘", textPaint, "banner");

 

posted @   YY2000  阅读(704)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示