播放svga动画链接:
http://svga.io/svga-preview.html
SVGA他人的Demo
https://github.com/yyued/SVGAPlayer-Android
1. 添加依赖: 'com.github.yyued:SVGAPlayer-Android:2.4.7'
2. 初始化的两种方式:
1).
SVGAParser.Companion.shareParser().init(context);
parser = SVGAParser.Companion.shareParser();
2).
SVGAParser parser = new SVGAParser(context);
parser.init(context);
3. 使用svga文件
1). 从Assets文件夹下获取并解析(需要做动画变更处理的, 不需要处理直接在xml中放入资源即可)
parser.decodeFromAssets("svga文件", new SVGAParser.ParseCompletion() {
@Override
public void onComplete(SVGAVideoEntity svgaVideoEntity) {
//创建一个SVGADrawable的实体drawable来替换原有svga图片
svgaBottom = new SVGADrawable(svgaVideoEntity);
//设置图片资源
holder.svgaShowBottom.setImageDrawable(svgaBottom);
//执行动画
holder.svgaShowBottom.startAnimation();
}
@Override
public void onError() {
}
});
2). 从网络URL加载
parser.decodeFromURL(new URL("url"), new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@NotNull SVGAVideoEntity videoItem) {
//设置要显示的svga动画
animationView.setVideoItem(videoItem);
//设置动画执行一次,如果不设置就会一直循环播放动画
//animationView.setLoops(1);
//执行动画
animationView.startAnimation();
}
@Override
public void onError() {
}
});
4. 监听动画
animationView.setCallback(new SVGACallback() {
@Override
public void onPause() {
Log.d(TAG, "onPause()");
}
@Override
public void onFinished() {
Log.d(TAG, "设置setLoops()时结束调用");
}
@Override
public void onRepeat() {
Log.d(TAG, "不设置setLoops()时, 会在一次动画完成后执行");
}
@Override
public void onStep(int frame, double percentage) {
Log.d(TAG, "不停的执行...");
}
});