[Sample App] Added the ability to load a file from assets
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d5e770d..07a4d86 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 2.6.0
+### Features and Improvements
+* [Sample App] Added the ability to load a file from assets.
+
# 2.5.7
* Reapply min/max frame once composition is loaded (#827).
* Fixed a bug that would ignore setting minFrame to 0 before the composition was set (#820).
@@ -23,7 +27,7 @@
# 2.5.2
-# Features and Improvements
+### Features and Improvements
* Totally new sample app!
* Rebuilt from the ground up.
* Lottiefiles integration
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
index fe2eed5..d91cd0d 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
@@ -41,6 +41,8 @@
fetchAnimationByUrl(url)
} else if (args.fileUri != null) {
fetchAnimationByFileUri(args.fileUri)
+ } else if (args.asset != null) {
+ fetchAnimationByAsset(args.asset)
}
}
@@ -158,12 +160,22 @@
return
}
- LottieComposition.Factory.fromInputStream(fis, {
+ LottieComposition.Factory.fromInputStream(fis) {
if (it == null) {
error.value = IllegalArgumentException("Er")
} else {
composition.value = CompositionData(it)
}
- })
+ }
+ }
+
+ private fun fetchAnimationByAsset(asset: String) {
+ LottieComposition.Factory.fromAssetFileName(getApplication(), asset) {
+ if (it == null) {
+ error.value = IllegalArgumentException("Error loading asset " + asset)
+ } else {
+ composition.value = CompositionData(it)
+ }
+ }
}
}
\ No newline at end of file
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
index 605592d..7fa7aae 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
@@ -11,6 +11,7 @@
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ArrayAdapter
import android.widget.EditText
import android.widget.Toast
import com.airbnb.lottie.samples.model.CompositionArgs
@@ -57,6 +58,22 @@
.setNegativeButton(R.string.preview_cancel) { dialog, _ -> dialog.dismiss() }
.show()
}
+
+ assets.setOnClickListener {
+ val adapter = ArrayAdapter<String>(requireContext(), android.R.layout.select_dialog_item).apply {
+ requireContext().assets.list("").forEach {
+ if (it.endsWith(".json")) {
+ add(it)
+ }
+ }
+ }
+ AlertDialog.Builder(context)
+ .setAdapter(adapter) { _, which ->
+ val args = CompositionArgs(asset = adapter.getItem(which))
+ startActivity(PlayerActivity.intent(requireContext(), args))
+ }
+ .show()
+ }
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
index 8cc8ebb..0e0fdf8 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
@@ -11,5 +11,6 @@
val assetName: String? = null,
val url: String? = null,
val fileUri: Uri? = null,
+ val asset: String? = null,
val animationData: AnimationData? = null
) : Parcelable
\ No newline at end of file
diff --git a/LottieSample/src/main/res/drawable/ic_storage.xml b/LottieSample/src/main/res/drawable/ic_storage.xml
new file mode 100644
index 0000000..53c595c
--- /dev/null
+++ b/LottieSample/src/main/res/drawable/ic_storage.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M2,20h20v-4L2,16v4zM4,17h2v2L4,19v-2zM2,4v4h20L22,4L2,4zM6,7L4,7L4,5h2v2zM2,14h20v-4L2,10v4zM4,11h2v2L4,13v-2z"/>
+</vector>
diff --git a/LottieSample/src/main/res/layout/fragment_preview.xml b/LottieSample/src/main/res/layout/fragment_preview.xml
index b27f841..5d5506a 100644
--- a/LottieSample/src/main/res/layout/fragment_preview.xml
+++ b/LottieSample/src/main/res/layout/fragment_preview.xml
@@ -33,5 +33,12 @@
android:layout_height="wrap_content"
app:titleText="@string/preview_url"
app:icon="@drawable/ic_network"/>
+
+ <com.airbnb.lottie.samples.PreviewItemView
+ android:id="@+id/assets"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:titleText="@string/preview_assets"
+ app:icon="@drawable/ic_storage"/>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/LottieSample/src/main/res/values/strings.xml b/LottieSample/src/main/res/values/strings.xml
index 5233a7c..8b6c7a3 100644
--- a/LottieSample/src/main/res/values/strings.xml
+++ b/LottieSample/src/main/res/values/strings.xml
@@ -33,6 +33,7 @@
<string name="preview_title">Preview</string>
<string name="preview_qr">Scan a QR code</string>
+ <string name="preview_assets">Load from assets</string>
<string name="preview_file">Open a file</string>
<string name="preview_url">Enter a URL to a json or zip file</string>
<string name="preview_load">Load</string>