y vectores exportados en formato JSON bodymovin
GitHub • Versiones
Captura de pantalla
Resumen
Instalación
AXrLottie solo está disponible en JCenter agregarlo como una dependencia (módulo gradle)
Implementación de Gradle & # 39; com.aghajari.rlottie: AXrLottie: 1.0.0 & # 39;
Maven [19659010] < adicción >
< groupId > com.aghajari.rlottie </ groupId >
< artifactId > AXrLottie </ artifactId >
< versión > 1.0.0 </ versión >
< tipo > pom </ tipo >
</ dependencia >
Primero debes saber qué es lotte?
Lottie carga y renderiza animaciones y vectores exportados al formato JSON bodymovin. Bodymovin JSON se puede crear y exportar desde After Effects con bodymovin, Sketch con Lottie Sketch Export y desde Haiku.
Por primera vez, los diseñadores pueden crear y enviar hermosas animaciones sin que un ingeniero las vuelva a crear cuidadosamente a mano. Dado que la animación es compatible con JSON, son de tamaño extremadamente pequeño pero pueden ser de gran complejidad.
¡COMENZEMOS!
Instalar AXrLottie
Primer paso, debe instalar AXrLottie
Uso básico
Cree un AXrLottieImageView en su diseño.
< com .aghajari.rlottie. AXrLottieImageView
android : id = " @ + id / lotse_view "
android : layout_width = [19659008] " 180dp "
android : layout_height = " 180dp "
android : layout_gravity = " center " />
Ahora solo tiene que cargar su lote de animación
batchView . setLottieDrawable ( AXrLottieDrawable . fromAssets ( este fileName)
.setSize (ancho, alto)
.construir());
Lotes and View . playAnimation ();
puede cargar el archivo por lotes de las siguientes fuentes:
- Archivo
- Json (String)
- Url
- Activos
- Recurso
- InputStram
por lotes y almacenará en caché animaciones y archivos que es posible deshabilitar la caché en AXrLottieDrawable Builder
Salida
LayerProperty
lote y Vista . setLayerProperty ( " layer_name. ** " AXrLottieProperty . colorProperty (color));
Propiedades:
- Color
- FillOpacity
- StrokeOpacity
- StrokeWidth
- Stroke 19659041] TrOpacity
- TrPosition
- TrRotation
- TrScale
Salida [19459000397
AnimationLayers
para ( AXrayerLotti1990 layerInfo : lotes y dibujables . getLayers ()) {
Log . i ( " AXrLottie " " layerName: " + layerInfo . ] getName ());
}
Lottie2Gif
¡puede exportar animaciones por lotes como GIF! gracias a gif-h
AXrLottie2Gif . crear (lotes y dibujables)
.setListener ( nuevo AXrLottie2Gif . Lottie2GifListener () {
inicio prolongado ;
@Override
public void onStarted () {
inicio = Sistema . currentTimeMillis ();
}
@Override
public void onProgress ( int frame int totalFrame ) {
log ( " progreso: " + frame + " / " + totalFrame);
}
@Override
público void enFinished () {
log ( " GIF creado (" + ( Sistema . currentTimeMillis () - inicio) + " ms) r n " +
" Resolución: " + gifSize + " x " + gifSize + " r n " +
" Ruta: " + archivo . getAbsolutePath () + " r n " +
" Tamaño de archivo: " + (archivo . longitud () / 1024 ) + " kb " );
}
})
.setBackgroundColor ( Color . BLANCO )
.setOutputPath (archivo)
.setSize (gifSize, gifSize)
.setBackgroundTask ( true )
.setDithering ( falso )
.setDestroyable ( verdadero )
.construir ();
Salida
Listeners
OnFrameChangedListener:
void onFrameChanged ( AXrLottieDrawable drawable19, frame: 1965369031L ] void onUpdate ( AXrLottieDrawable dibujable, int frame, long timeDiff force);
Mapa de bits renderFrame ( AXrLottieDrawable dibujable, Mapa de bits mapa de bits, int marco);
AnimatedSticker – AXE005] YouView puede crear AXrLottieImageView en AXEmojiView / StickerView usando este código:
AXEmojiManager . setStickerViewCreatorListener ( nuevo StickerViewCreatorListener () {
@Override
público Ver enCreateStickerView ( @NonNull Context context @Nullable StickerCategory categoría booleano isRecent ) {
volver nuevo AXrLottieImageView (contexto);
}
@Override
público Ver enCreateCategoryView ( @NonNull Context context ) {
volver nuevo AXrLottieImageView (contexto);
}
});
agréguelo justo después de AXEmojiManager.install
y podrá cargar sus animaciones en StickerProvider
@Override
public StickerLoader getLoader () {
volver nuevo StickerLoader () {
@Override
public void onLoadSticker ( Ver ver Adhesivo adhesivo ) {
if (ver instancia de AXrLottieImageView && pegatina instancia de AnimatedSticker ) {
AXrLottieImageView lotes yImageView = ( AXrLottieImageView ) vista;
AnimatedSticker animatedSticker = ( AnimatedSticker ) pegatina;
if (animatedSticker . drawable == null ) {
animatedSticker . dibujable = Utils . createFromSticker (ver . getContext (), animatedSticker, 100 );
}
lotes e ImageView . setLottieDrawable (animatedSticker . dibujable);
lotes e ImageView . playAnimation ();
}
}
@Override
public void onLoadStickerCategory ( Ver ver StickerCategory stickerCategory [1945903119659084] seleccionado) {19459019] seleccionado
si (ver instancia de AXrLottieImageView ) {
AXrLottieImageView lotes yImageView = ( AXrLottieImageView ) vista;
AnimatedSticker animatedSticker = ( AnimatedSticker ) stickerCategory . getCategoryData ();
if (animatedSticker . drawable == null ) {
animatedSticker . dibujable = Utils . createFromSticker (ver . getContext (), animatedSticker, 50 );
}
lotes e ImageView . setLottieDrawable (animatedSticker . dibujable);
// lotes e ImageView.playAnimation ();
}
}
};
}
Salida
Autor
Copyright 2020 Amir Hossein Aghajari
Con licencia de Apache License, Versión 2.0 (la "Licencia");
no puede utilizar este archivo excepto de acuerdo con la licencia.
Puede obtener una copia de la licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software
distribuido bajo la Licencia se distribuye "TAL CUAL",
SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita.
Consulte la licencia para el idioma específico que rige los permisos e
limitaciones de la licencia.
para ( AXrayerLotti1990 layerInfo : lotes y dibujables . getLayers ()) {
Log . i ( " AXrLottie " " layerName: " + layerInfo . ] getName ());
}
AXrLottie2Gif . crear (lotes y dibujables)
.setListener ( nuevo AXrLottie2Gif . Lottie2GifListener () {
inicio prolongado ;
@Override
public void onStarted () {
inicio = Sistema . currentTimeMillis ();
}
@Override
public void onProgress ( int frame int totalFrame ) {
log ( " progreso: " + frame + " / " + totalFrame);
}
@Override
público void enFinished () {
log ( " GIF creado (" + ( Sistema . currentTimeMillis () - inicio) + " ms) r n " +
" Resolución: " + gifSize + " x " + gifSize + " r n " +
" Ruta: " + archivo . getAbsolutePath () + " r n " +
" Tamaño de archivo: " + (archivo . longitud () / 1024 ) + " kb " );
}
})
.setBackgroundColor ( Color . BLANCO )
.setOutputPath (archivo)
.setSize (gifSize, gifSize)
.setBackgroundTask ( true )
.setDithering ( falso )
.setDestroyable ( verdadero )
.construir ();
void onFrameChanged ( AXrLottieDrawable drawable19, frame: 1965369031L ] void onUpdate ( AXrLottieDrawable dibujable, int frame, long timeDiff force);
Mapa de bits renderFrame ( AXrLottieDrawable dibujable, Mapa de bits mapa de bits, int marco);
AXEmojiManager . setStickerViewCreatorListener ( nuevo StickerViewCreatorListener () {
@Override
público Ver enCreateStickerView ( @NonNull Context context @Nullable StickerCategory categoría booleano isRecent ) {
volver nuevo AXrLottieImageView (contexto);
}
@Override
público Ver enCreateCategoryView ( @NonNull Context context ) {
volver nuevo AXrLottieImageView (contexto);
}
});
AXEmojiManager.install
@Override
public StickerLoader getLoader () {
volver nuevo StickerLoader () {
@Override
public void onLoadSticker ( Ver ver Adhesivo adhesivo ) {
if (ver instancia de AXrLottieImageView && pegatina instancia de AnimatedSticker ) {
AXrLottieImageView lotes yImageView = ( AXrLottieImageView ) vista;
AnimatedSticker animatedSticker = ( AnimatedSticker ) pegatina;
if (animatedSticker . drawable == null ) {
animatedSticker . dibujable = Utils . createFromSticker (ver . getContext (), animatedSticker, 100 );
}
lotes e ImageView . setLottieDrawable (animatedSticker . dibujable);
lotes e ImageView . playAnimation ();
}
}
@Override
public void onLoadStickerCategory ( Ver ver StickerCategory stickerCategory [1945903119659084] seleccionado) {19459019] seleccionado
si (ver instancia de AXrLottieImageView ) {
AXrLottieImageView lotes yImageView = ( AXrLottieImageView ) vista;
AnimatedSticker animatedSticker = ( AnimatedSticker ) stickerCategory . getCategoryData ();
if (animatedSticker . drawable == null ) {
animatedSticker . dibujable = Utils . createFromSticker (ver . getContext (), animatedSticker, 50 );
}
lotes e ImageView . setLottieDrawable (animatedSticker . dibujable);
// lotes e ImageView.playAnimation ();
}
}
};
}
Copyright 2020 Amir Hossein Aghajari
Con licencia de Apache License, Versión 2.0 (la "Licencia");
no puede utilizar este archivo excepto de acuerdo con la licencia.
Puede obtener una copia de la licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software
distribuido bajo la Licencia se distribuye "TAL CUAL",
SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita.
Consulte la licencia para el idioma específico que rige los permisos e
limitaciones de la licencia.