Una breve muestra de Android SVGA (1) Uso de la biblioteca svgaplayer

Una breve muestra del uso de Android SVGA (1)

Por favor agregue la descripción de la imagen.

enlaces relacionados

Sitio web oficial de SVGA
Documentación SVGA-github

fondo

El desarrollo de proyectos implica animación y existen muchas opciones a la hora de elegir un plan de animación. Como animación Json, animación svga, gif, etc. Cada uno tiene sus propias ventajas. Actualmente, la animación SVGA se utiliza en el proyecto, por lo que existe esta serie de artículos.

usar

(1. Introducción

En primer lugar, hay aproximadamente dos formas de introducirlo:
una es utilizar dependencias remotas directamente y el código de muestra es el siguiente:

工程 build.gradle 中,添加仓库

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
然后,在应用 build.gradle 中添加依赖。
compile 'com.github.yyued:SVGAPlayer-Android:latest'

El segundo método es desplegar la biblioteca en el proyecto y hacer que los módulos dependan del proyecto.

Dado que la biblioteca svga ha declarado oficialmente que ya no se mantendrá, se recomienda eliminarla directamente e introducirla en el proyecto como modelo.
(2) Confusión

Utilice el siguiente código para ofuscar:

-keep class com.squareup.wire.** { *; }
-keep class com.opensource.svgaplayer.proto.** { *; }
(3) Inicialización

Antes de su uso, SVGAParser debe inicializarse antes de poder usarse.
Tenga en cuenta que si algunos recursos implican una carga previa, es necesario inicializar SVGAParser.
Sin embargo, si solo usa SVGAImageView para mostrar datos (ruta de recurso especificada en XML), no es necesario inicializar, porque al leer el código fuente, se descubre que en el proceso de usar SVGAImageView, su método parserSource () se inicializará. SVGAParser.

(1) En el diseño xml, declare directamente la animación que el control svga debe reproducir:

<?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>

Inicie la página para obtener una vista previa, la representación es la siguiente:
Por favor agregue la descripción de la imagen.
para obtener más etiquetas xml, consulte la documentación oficial.
Aquí hay un método para implementar svga usando xml. Sin embargo, este método generalmente tiene limitaciones relativamente grandes, por lo que aquí hay otro método, "implementación mediante código".

(2) Utilice código para implementar:
inicialización:

SVGAImageView imageView = new SVGAImageView(this);
parser = SVGAParser.shareParser()
SVGAParser.shareParser().init(this);

Cargar recursos:

创建一个 SVGAParser 实例,加载 assets 中的动画。

parser = new SVGAParser(this);
// 第三个为可缺省参数,默认为 null,如果设置该方法,则内部不在处理音频的解析以及播放,会通过 PlayCallback 把音频 File 实例回传给开发者,有开发者自行控制音频的播放与停止。
parser.decodeFromAssets("posche.svga", object : SVGAParser.ParseCompletion {
    // ...
}, object : SVGAParser.PlayCallback {
    // The default is null, can not be set
})

创建一个 SVGAParser 实例,加载远端服务器中的动画。

parser = new SVGAParser(this);
// 第三个为可缺省参数,默认为 null,如果设置该方法,则内部不在处理音频的解析以及播放,会通过 PlayCallback 把音频 File 实例回传给开发者,有开发者自行控制音频的播放与停止。
parser.decodeFromURL(new URL("https://github.com/yyued/SVGA-Samples/blob/master/posche.svga?raw=true"), new SVGAParser.ParseCompletion() {
    // ...
}, object : SVGAParser.PlayCallback {
    // The default is null, can not be set
})

创建一个 SVGADrawable 实例,并赋值给 SVGAImageView,然后播放动画。

parser = new SVGAParser(this);
parser.decodeFromURL(..., new SVGAParser.ParseCompletion() {
    @Override
    public void onComplete(@NotNull SVGAVideoEntity videoItem) {
        SVGADrawable drawable = new SVGADrawable(videoItem);
        imageView.setImageDrawable(drawable);
        imageView.startAnimation();
    }
    @Override
    public void onError() {

    }
});

Lo anterior es la forma de cargar y mostrar svga. Se puede ver que los recursos cargados pueden ser locales o del lado del servidor. Para los recursos del lado del servidor, la lógica de almacenamiento en caché debe ser definida por usted mismo y, finalmente, a través de una devolución de llamada de carga, los datos se copian al control y se puede realizar la visualización de la animación.

El código de muestra de la lógica de caché es el siguiente:

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

El SVGASoundManager final es una clase de administración de reproducción de audio SVGA. La API relevante no se describe aquí. Puede consultar la documentación oficial para verla.

Con respecto al uso preliminar de svga, esta es la introducción. Más adelante, presentaremos en profundidad el método de implementación de svga, el principio de carga y otra lógica.

eso es todo------------------------------------------------ ---------------------

Supongo que te gusta

Origin blog.csdn.net/motosheep/article/details/132920484
Recomendado
Clasificación