SVGAPlayer
Introduce
SVGAPlayer is a light-weight animation renderer. You use tools to export svga
file from Adobe Animate CC
or Adobe After Effects
, and then use SVGAPlayer to render animation on mobile application.
SVGAPlayer-Android
render animation natively via Android Canvas Library, brings you a high-performance, low-cost animation experience.
If wonder more information, go to this website.
Usage
Here introduce SVGAPlayer-Android
usage. Wonder exporting usage? Click here.
Install Via Gradle
We host aar file on JitPack, your need to add JitPack.io
repo build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Then, add dependency to app build.gradle
.
compile 'com.github.yyued:SVGAPlayer-Android:latest'
Static Parser Support
Perser#shareParser should be init(context) in Application or other Activity.
Otherwise it will report an error:
Log.e("SVGAParser", "在配置 SVGAParser context 前, 无法解析 SVGA 文件。")
Matte Support
Head on over to Dynamic · Matte Layer
Proguard-rules
-keep class com.squareup.wire.** { *; }
-keep class com.opensource.svgaplayer.proto.** { *; }
Locate files
SVGAPlayer could load svga file from Android assets
directory or remote server.
Using XML
You may use layout.xml
to add a SVGAImageView
.
<?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>
The following attributes is allowable:
source: String
The svga file path, provide a path relative to Android assets directory, or provide a http url.
autoPlay: Boolean
Defaults to true
.
After animation parsed, plays animation automatically.
loopCount: Int
Defaults to 0
.
How many times should animation loops. 0
means Infinity Loop.
clearsAfterStop: Boolean
Defaults to true
.
Clears canvas after animation stop.
fillMode: String
Defaults to Forward
. Could be Forward
, Backward
.
Forward
means animation will pause on last frame after finished.
Backward
means animation will pause on first frame after finished.
Using code
You may use code to add SVGAImageView
either.
SVGAImageView
instance.
Create a SVGAImageView imageView = new SVGAImageView(this);
Declare a static Parser instance.
parser = SVGAParser.shareParser()
Init parser instance
You should initialize the parser instance with context before usage.
SVGAParser.shareParser().init(this);
Otherwise it will report an error:
Log.e("SVGAParser", "在配置 SVGAParser context 前, 无法解析 SVGA 文件。")
You can also create SVGAParser
instance by yourself.
SVGAParser
instance, parse from assets like this.
Create a parser = new SVGAParser(this);
parser.decodeFromAssets("posche.svga", new SVGAParser.ParseCompletion() {
// ...
});
SVGAParser
instance, parse from remote server like this.
Create a parser = new SVGAParser(this);
parser.decodeFromURL(new URL("https://github.com/yyued/SVGA-Samples/blob/master/posche.svga?raw=true"), new SVGAParser.ParseCompletion() {
});
SVGADrawable
instance then set to SVGAImageView
, play it as you want.
Create a 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() {
}
});
Cache
SVGAParser
will not manage any cache, you need to setup cacher by yourself.
Setup HttpResponseCache
SVGAParser
depends on URLConnection
, URLConnection
uses HttpResponseCache
to cache things.
Add codes to Application.java:onCreate
to setup cacher.
val cacheDir = File(context.applicationContext.cacheDir, "http")
HttpResponseCache.install(cacheDir, 1024 * 1024 * 128)
SVGALogger
Updated the internal log output, which can be managed and controlled through SVGALogger. It is not activated by default. Developers can also implement the ILogger interface to capture and collect logs externally to facilitate troubleshooting
Set whether the log is enabled through the setLogEnabled
method
Inject a custom ILogger implementation class through the injectSVGALoggerImp
method
Features
Here are many feature samples.
- Replace an element with Bitmap.
- Add text above an element.
- Add static layout text above an element.
- Hides an element dynamicaly.
- Use a custom drawer for element.
APIs
Head on over to https://github.com/yyued/SVGAPlayer-Android/wiki/APIs
CHANGELOG
Head on over to CHANGELOG
Credits
Contributors
This project exists thanks to all the people who contribute. [Contribute].
Backers
Thank you to all our backers!
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]