SVGA动画的使用

播放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, "不停的执行...");

            }

        });

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。