Migrate to androidx (#962)
Fixes #898
diff --git a/.travis.yml b/.travis.yml
index 7204725..fe3c849 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -36,8 +36,8 @@
- tools
- platform-tools
- tools
- - build-tools-27.0.3
- - android-27
+ - build-tools-28.0.2
+ - android-28
- extra-android-m2repository
jdk:
- oraclejdk8
diff --git a/LottieSample/build.gradle b/LottieSample/build.gradle
index 42d1e7e..d56f708 100644
--- a/LottieSample/build.gradle
+++ b/LottieSample/build.gradle
@@ -7,15 +7,15 @@
}
android {
- compileSdkVersion 27
+ compileSdkVersion 28
defaultConfig {
applicationId "com.airbnb.lottie"
minSdkVersion 16
- targetSdkVersion 27
+ targetSdkVersion 28
versionCode 66
versionName "2.7.0"
multiDexEnabled true
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
buildConfigField("String", "S3AccessKey", "\"" + System.getenv("LOTTIE_S3_API_KEY") + "\"")
buildConfigField("String", "S3SecretKey", "\"" + System.getenv("LOTTIE_S3_SECRET_KEY") + "\"")
@@ -53,55 +53,56 @@
dependencies {
implementation project(':lottie')
- implementation "com.android.support:appcompat-v7:$supportLibVersion"
- implementation "com.android.support:recyclerview-v7:$supportLibVersion"
- implementation "com.android.support:design:$supportLibVersion"
- implementation "com.android.support:cardview-v7:$supportLibVersion"
- implementation 'com.android.support:multidex:1.0.1'
- implementation 'android.arch.lifecycle:extensions:1.1.0'
- kapt "android.arch.lifecycle:compiler:1.1.0"
- implementation "com.android.support:customtabs:$supportLibVersion"
- implementation 'com.airbnb.android:epoxy:2.16.4'
- kapt 'com.airbnb.android:epoxy-processor:2.16.4'
+ implementation "androidx.appcompat:appcompat:${androidXVersion}"
+ implementation "androidx.recyclerview:recyclerview:${androidXVersion}"
+ implementation "com.google.android.material:material:${androidXVersion}"
+ implementation "androidx.cardview:cardview:${androidXVersion}"
+ implementation "androidx.core:core-ktx:${androidXVersion}"
+ implementation "androidx.browser:browser:${androidXVersion}"
+ implementation 'androidx.multidex:multidex:2.0.0'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
+ kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"
+ implementation 'com.airbnb.android:epoxy:2.17.0'
+ kapt 'com.airbnb.android:epoxy-processor:2.17.0'
implementation 'com.airbnb.android:mvrx:0.5.0'
- implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta5'
- implementation 'androidx.core:core-ktx:0.2'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
- implementation 'com.jakewharton:butterknife:8.8.1'
- kapt 'com.jakewharton:butterknife-compiler:8.8.1'
+ implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'
+ kapt 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
implementation 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.airbnb.android:happo:0.0.15@aar'
// TODO: figure out why transitive deps of happo are needed
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
- androidTestImplementation 'com.android.support.test:runner:1.0.1'
- androidTestImplementation 'com.android.support.test.espresso:espresso-idling-resource:3.0.1'
- androidTestImplementation 'io.reactivex.rxjava2:rxjava:2.1.5'
- androidTestImplementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
- androidTestImplementation 'com.squareup.okhttp3:okhttp:3.9.0'
- androidTestImplementation 'com.amazonaws:aws-android-sdk-core:2.6.5'
- androidTestImplementation 'com.amazonaws:aws-android-sdk-s3:2.6.5'
- androidTestImplementation 'io.jsonwebtoken:jjwt:0.8.0'
- androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
+ androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
+ androidTestImplementation 'androidx.test.espresso:espresso-idling-resource:3.1.0-alpha4'
+ androidTestImplementation 'io.reactivex.rxjava2:rxjava:2.2.1'
+ androidTestImplementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
+ androidTestImplementation 'com.squareup.okhttp3:okhttp:3.11.0'
+ androidTestImplementation 'com.amazonaws:aws-android-sdk-core:2.6.31'
+ androidTestImplementation 'com.amazonaws:aws-android-sdk-s3:2.6.31'
+ androidTestImplementation 'io.jsonwebtoken:jjwt:0.9.0'
+ androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha4', {
exclude group: 'com.android.support', module: 'support-annotations'
exclude group: 'org.hamcrest', module: 'hamcrest-integration'
})
- androidTestImplementation('com.android.support.test:runner:0.5', {
+ androidTestImplementation('androidx.test:runner:1.1.0-alpha4', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- androidTestImplementation('com.android.support.test:rules:0.5', {
+ androidTestImplementation('androidx.test:rules:1.1.0-alpha4', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.google.code.gson:gson:2.8.2'
- implementation 'com.squareup.okhttp3:okhttp:3.10.0'
- implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+ implementation 'com.squareup.okhttp3:okhttp:3.11.0'
+ implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
- implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
- implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
- implementation 'com.github.bumptech.glide:glide:4.6.1'
+ implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
+ implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
+ implementation 'io.reactivex.rxjava2:rxjava:2.2.1'
+ implementation 'com.github.bumptech.glide:glide:4.8.0'
}
repositories {
mavenCentral()
diff --git a/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieSnapshotProvider.java b/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieSnapshotProvider.java
index 6c7b9e7..f0d5f14 100644
--- a/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieSnapshotProvider.java
+++ b/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieSnapshotProvider.java
@@ -10,7 +10,7 @@
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.os.Environment;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
@@ -28,14 +28,11 @@
import java.io.File;
import java.io.IOException;
-import java.util.Arrays;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-import retrofit2.http.HEAD;
-
public class LottieSnapshotProvider extends SnapshotProvider {
private static final float[] PROGRESS = {0f, 0.25f, 0.5f, 0.75f, 1f};
diff --git a/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java b/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java
index 39268e2..f1acc33 100644
--- a/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java
+++ b/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java
@@ -2,10 +2,10 @@
import android.Manifest;
import android.os.Build;
-import android.support.test.filters.LargeTest;
-import android.support.test.rule.ActivityTestRule;
-import android.support.test.rule.GrantPermissionRule;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.rule.GrantPermissionRule;
+import androidx.test.runner.AndroidJUnit4;
import android.text.TextUtils;
import android.util.Log;
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/AppIntroActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/AppIntroActivity.kt
index ed2d83e..cfcdba7 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/AppIntroActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/AppIntroActivity.kt
@@ -1,8 +1,7 @@
package com.airbnb.lottie.samples
import android.os.Bundle
-import android.support.v4.app.Fragment
-import android.support.v4.view.ViewPager
+import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -60,7 +59,7 @@
animationView.progress = startProgress.lerp(endProgress, positionOffset)
}
- class EmptyFragment : Fragment() {
+ class EmptyFragment : androidx.fragment.app.Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return container!!.inflate(R.layout.fragment_empty, false)
@@ -75,9 +74,9 @@
private fun setViewPagerScroller() {
try {
- val scrollerField = ViewPager::class.java.getDeclaredField("mScroller")
+ val scrollerField = androidx.viewpager.widget.ViewPager::class.java.getDeclaredField("mScroller")
scrollerField.isAccessible = true
- val interpolator = ViewPager::class.java.getDeclaredField("sInterpolator")
+ val interpolator = androidx.viewpager.widget.ViewPager::class.java.getDeclaredField("sInterpolator")
interpolator.isAccessible = true
val scroller = object : Scroller(this, interpolator.get(null) as Interpolator) {
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BaseEpoxyFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BaseEpoxyFragment.kt
index 1eb4d0f..1c18749 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BaseEpoxyFragment.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BaseEpoxyFragment.kt
@@ -6,6 +6,7 @@
import android.view.ViewGroup
import com.airbnb.epoxy.AsyncEpoxyController
import com.airbnb.epoxy.EpoxyController
+import com.airbnb.lottie.samples.R.id.recyclerView
import com.airbnb.mvrx.BaseMvRxFragment
import kotlinx.android.synthetic.main.fragment_base.*
import kotlinx.android.synthetic.main.fragment_base.view.*
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BullseyeActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BullseyeActivity.kt
index 9c2caca..1ad64ed 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BullseyeActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/BullseyeActivity.kt
@@ -2,8 +2,8 @@
import android.graphics.PointF
import android.os.Bundle
-import android.support.v4.widget.ViewDragHelper
-import android.support.v7.app.AppCompatActivity
+import androidx.customview.widget.ViewDragHelper
+import androidx.appcompat.app.AppCompatActivity
import android.view.View
import com.airbnb.lottie.LottieProperty
import com.airbnb.lottie.model.KeyPath
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
index 918c33a..10966ac 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
@@ -2,15 +2,12 @@
import android.graphics.PointF
import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
import android.util.Log
import com.airbnb.lottie.LottieProperty
import com.airbnb.lottie.model.KeyPath
import com.airbnb.lottie.utils.MiscUtils
-import kotlinx.android.synthetic.main.activity_dynamic.animationView
-import kotlinx.android.synthetic.main.activity_dynamic.colorButton
-import kotlinx.android.synthetic.main.activity_dynamic.jumpHeight
-import kotlinx.android.synthetic.main.activity_dynamic.speedButton
+import kotlinx.android.synthetic.main.activity_dynamic.*
private val COLORS = arrayOf(
0xff5a5f,
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
index 2468c07..71dd6b2 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
@@ -1,7 +1,7 @@
package com.airbnb.lottie.samples
import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
import android.text.Editable
import android.text.TextWatcher
import com.airbnb.lottie.TextDelegate
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FontFragment.java b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FontFragment.java
index 4748037..c01e666 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FontFragment.java
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FontFragment.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie.samples;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FullScreenActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FullScreenActivity.kt
index dceec6d..07014cb 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FullScreenActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/FullScreenActivity.kt
@@ -1,7 +1,7 @@
package com.airbnb.lottie.samples
import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
/**
* To have a full screen animation, make an animation that is wider than the screen and set the
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ListActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ListActivity.kt
index cbfa463..f0bf1b8 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ListActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ListActivity.kt
@@ -1,9 +1,8 @@
package com.airbnb.lottie.samples
import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
import com.airbnb.epoxy.EpoxyController
-import com.airbnb.lottie.samples.views.ListingCard
import com.airbnb.lottie.samples.views.WishListIconView
import com.airbnb.lottie.samples.views.listingCard
import com.airbnb.lottie.samples.views.marquee
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
index 4f5c462..d6e9650 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
@@ -1,6 +1,6 @@
package com.airbnb.lottie.samples
-import android.support.multidex.MultiDexApplication
+import androidx.multidex.MultiDexApplication
import com.airbnb.lottie.L
import com.google.gson.FieldNamingPolicy
import com.google.gson.GsonBuilder
@@ -25,7 +25,7 @@
val retrofit by lazy {
Retrofit.Builder()
.client(okHttpClient)
- .baseUrl("http://lottiefiles.com/api/v1/")
+ .baseUrl("https://lottiefiles.com/api/v1/")
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
index e233b10..e66e777 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
@@ -1,6 +1,6 @@
package com.airbnb.lottie.samples
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
import com.airbnb.epoxy.EpoxyController
import com.airbnb.lottie.samples.model.AnimationData
import com.airbnb.lottie.samples.model.AnimationResponse
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/MainActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/MainActivity.kt
index 5bc6ef6..a0bcd90 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/MainActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/MainActivity.kt
@@ -1,17 +1,16 @@
package com.airbnb.lottie.samples
import android.os.Bundle
-import android.support.customtabs.CustomTabsIntent
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
-import android.support.v7.app.AppCompatActivity
-import android.support.v7.app.AppCompatDelegate
import android.view.MenuItem
-import androidx.net.toUri
+import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatDelegate
+import androidx.browser.customtabs.CustomTabsIntent
+import androidx.core.net.toUri
+import androidx.fragment.app.Fragment
+import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemSelectedListener {
-
override fun onCreate(savedInstanceState: Bundle?) {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
super.onCreate(savedInstanceState)
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
index 5bcbd54..10dfe39 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
@@ -1,6 +1,6 @@
package com.airbnb.lottie.samples
-import android.support.v4.view.ViewPager
+import androidx.viewpager.widget.ViewPager
internal open class OnPageChangeListenerAdapter(
private val onPageScrollStateChanged: ((state: Int) -> Unit)? = null,
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
index 3126a61..8b1cb7f 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
@@ -3,7 +3,7 @@
import android.content.Context
import android.content.Intent
import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
import com.airbnb.lottie.samples.model.CompositionArgs
class PlayerActivity : AppCompatActivity() {
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index d699236..f189cee 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -3,21 +3,19 @@
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.app.AlertDialog
-import android.arch.lifecycle.Lifecycle
import android.graphics.Color
import android.os.Bundle
-import android.support.design.widget.BottomSheetBehavior
-import android.support.design.widget.Snackbar
-import android.support.transition.AutoTransition
-import android.support.transition.TransitionManager
-import android.support.v4.app.Fragment
-import android.support.v4.content.ContextCompat
-import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.*
import android.widget.EditText
-import androidx.view.children
-import androidx.view.isVisible
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.core.view.children
+import androidx.core.view.isVisible
+import androidx.fragment.app.Fragment
+import androidx.lifecycle.Lifecycle
+import androidx.transition.AutoTransition
+import androidx.transition.TransitionManager
import com.airbnb.lottie.L
import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.LottieComposition
@@ -35,6 +33,8 @@
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.data.LineData
import com.github.mikephil.charting.data.LineDataSet
+import com.google.android.material.bottomsheet.BottomSheetBehavior
+import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.bottom_sheet_key_paths.*
import kotlinx.android.synthetic.main.bottom_sheet_render_times.*
import kotlinx.android.synthetic.main.bottom_sheet_warnings.*
@@ -132,7 +132,7 @@
viewModel.fetchAnimation(args)
viewModel.asyncSubscribe(PlayerState::composition, onFail = {
Snackbar.make(coordinatorLayout, R.string.composition_load_error, Snackbar.LENGTH_LONG).show()
- Log.w(L.TAG, "Error loading composition.", it);
+ Log.w(L.TAG, "Error loading composition.", it)
}) {
loadingView.isVisible = false
onCompositionLoaded(it)
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 f70d592..0594bc7 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
@@ -3,7 +3,7 @@
import android.animation.ValueAnimator
import android.app.Application
import android.net.Uri
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
import com.airbnb.lottie.LottieComposition
import com.airbnb.lottie.LottieCompositionFactory
import com.airbnb.lottie.LottieTask
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 3e80d76..89011c6 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
@@ -6,11 +6,15 @@
import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.pm.PackageManager
-import android.support.design.widget.Snackbar
+import com.google.android.material.snackbar.Snackbar
import android.widget.ArrayAdapter
import android.widget.EditText
import android.widget.Toast
+import androidx.core.app.ActivityCompat.requestPermissions
+import androidx.core.app.ActivityCompat.startActivityForResult
+import androidx.core.content.ContextCompat.startActivity
import com.airbnb.epoxy.EpoxyController
+import com.airbnb.lottie.samples.R.id.coordinatorLayout
import com.airbnb.lottie.samples.model.CompositionArgs
import com.airbnb.lottie.samples.views.marquee
import kotlinx.android.synthetic.main.fragment_player.*
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
index c6830d8..79f1c3c 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
@@ -1,7 +1,7 @@
package com.airbnb.lottie.samples
import android.content.Context
-import android.support.annotation.DrawableRes
+import androidx.annotation.DrawableRes
import android.util.AttributeSet
import android.view.View
import android.widget.LinearLayout
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/QRScanActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/QRScanActivity.kt
index f3cb32d..19c654a 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/QRScanActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/QRScanActivity.kt
@@ -5,7 +5,7 @@
import android.graphics.PointF
import android.os.Bundle
import android.os.Vibrator
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
import com.airbnb.lottie.samples.model.CompositionArgs
import com.dlazaro66.qrcodereaderview.QRCodeReaderView
import kotlinx.android.synthetic.main.activity_qrscan.*
@@ -50,4 +50,4 @@
companion object {
fun intent(context: Context) = Intent(context, QRScanActivity::class.java)
}
-}
+}
\ No newline at end of file
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
index 876fbc3..81661b5 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
@@ -1,7 +1,7 @@
package com.airbnb.lottie.samples
import android.content.Intent
-import android.support.v4.app.FragmentActivity
+import androidx.fragment.app.FragmentActivity
import com.airbnb.epoxy.EpoxyController
import com.airbnb.lottie.samples.model.AnimationResponse
import com.airbnb.lottie.samples.model.CompositionArgs
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TestColorFilterActivity.java b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TestColorFilterActivity.java
index 84ec8a2..7877cfb 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TestColorFilterActivity.java
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TestColorFilterActivity.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie.samples;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
public class TestColorFilterActivity extends AppCompatActivity {
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TodoFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TodoFragment.kt
deleted file mode 100644
index 86ebaf9..0000000
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TodoFragment.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.airbnb.lottie.samples
-
-import android.os.Bundle
-import android.support.v4.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-class TodoFragment : Fragment() {
-
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
- inflater.inflate(R.layout.fragment_todo, container, false)
-}
\ No newline at end of file
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
index c5f1ade..9e7ce50 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
@@ -2,7 +2,7 @@
import android.annotation.SuppressLint
import android.content.Context
-import android.support.v4.widget.ViewDragHelper
+import androidx.customview.widget.ViewDragHelper
import android.util.AttributeSet
import android.view.Gravity
import android.view.MotionEvent
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt
index 5d0f051..dcec895 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt
@@ -8,17 +8,16 @@
import android.os.Build
import android.os.VibrationEffect
import android.os.Vibrator
-import android.support.annotation.DrawableRes
-import android.support.annotation.LayoutRes
-import android.support.annotation.StringRes
-import android.support.design.widget.Snackbar
-import android.support.graphics.drawable.VectorDrawableCompat
-import android.support.v4.app.Fragment
-import android.support.v4.content.ContextCompat
+import androidx.annotation.DrawableRes
+import androidx.annotation.LayoutRes
+import androidx.annotation.StringRes
+import com.google.android.material.snackbar.Snackbar
+import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
+import androidx.fragment.app.Fragment
+import androidx.core.content.ContextCompat
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import com.bumptech.glide.Glide
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypographyDemoActivity.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypographyDemoActivity.kt
index e0d6f33..64cbbb8 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypographyDemoActivity.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypographyDemoActivity.kt
@@ -1,9 +1,9 @@
package com.airbnb.lottie.samples
import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
import android.view.View
import android.view.ViewTreeObserver
+import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_typography_demo.*
class TypographyDemoActivity : AppCompatActivity() {
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/WarningsDialogFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/WarningsDialogFragment.kt
deleted file mode 100644
index 09d805b..0000000
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/WarningsDialogFragment.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.airbnb.lottie.samples
-
-import android.os.Bundle
-import android.support.v4.app.DialogFragment
-import android.support.v7.widget.RecyclerView
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import kotlinx.android.synthetic.main.fragment_warnings.view.*
-import kotlinx.android.synthetic.main.view_holder_warning.view.*
-
-class WarningsDialogFragment : DialogFragment() {
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
- val view = inflater.inflate(R.layout.fragment_warnings, container, false)
- view!!.okButton.setOnClickListener { dismiss() }
- view.recyclerView.adapter = Adapter(arguments!!.getStringArrayList(ARG_WARNINGS))
- return view
- }
-
- private class Adapter(private val warnings: List<String>) : RecyclerView.Adapter<VH>() {
-
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH = VH(parent)
-
- override fun onBindViewHolder(holder: VH, position: Int) =
- holder.bind(warnings[position], position != itemCount - 1)
-
- override fun getItemCount(): Int = warnings.size
- }
-
- internal class VH(parent: ViewGroup) : RecyclerView.ViewHolder(
- parent.inflate(R.layout.view_holder_warning, false)) {
- fun bind(warning: String, showDivider: Boolean) {
- itemView.warning.text = warning
- itemView.divider.visibility = if (showDivider) View.VISIBLE else View.GONE
- }
- }
-
- companion object {
- private val ARG_WARNINGS = "warnings"
-
- internal fun newInstance(warnings: ArrayList<String>): WarningsDialogFragment {
- val args = Bundle()
- args.putStringArrayList(ARG_WARNINGS, warnings)
- val frag = WarningsDialogFragment()
- frag.arguments = args
- return frag
- }
- }
-}
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
index a222890..dfca563 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
@@ -2,9 +2,9 @@
import android.graphics.Color
import android.os.Parcelable
-import android.support.annotation.ColorInt
+import androidx.annotation.ColorInt
import android.util.Log
-import androidx.graphics.toColorInt
+import androidx.core.graphics.toColorInt
import com.airbnb.lottie.L
import kotlinx.android.parcel.Parcelize
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
index 51fbf81..38c5d10 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
@@ -1,7 +1,7 @@
package com.airbnb.lottie.samples.model
-import android.support.annotation.DrawableRes
-import android.support.annotation.StringRes
+import androidx.annotation.DrawableRes
+import androidx.annotation.StringRes
data class ShowcaseItem(
@DrawableRes val drawableRes: Int,
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
index ac6cb03..976c2be 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
@@ -6,8 +6,8 @@
import android.graphics.Color
import android.graphics.Paint
import android.graphics.drawable.ColorDrawable
-import android.support.annotation.ColorInt
-import android.support.v4.content.ContextCompat
+import androidx.annotation.ColorInt
+import androidx.core.content.ContextCompat
import android.util.AttributeSet
import android.view.View
import com.airbnb.lottie.samples.R
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
index d8f1738..6dc4352 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
@@ -5,7 +5,7 @@
import android.text.TextUtils
import android.util.AttributeSet
import android.widget.FrameLayout
-import androidx.view.isVisible
+import androidx.core.view.isVisible
import com.airbnb.epoxy.ModelProp
import com.airbnb.epoxy.ModelView
import com.airbnb.lottie.samples.R
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
index a747f22..60a1941 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
@@ -2,15 +2,15 @@
import android.content.Context
import android.graphics.Color
-import android.support.annotation.DrawableRes
-import android.support.v4.content.ContextCompat
-import android.support.v4.graphics.drawable.DrawableCompat
+import androidx.annotation.DrawableRes
+import androidx.core.content.ContextCompat
+import androidx.core.graphics.drawable.DrawableCompat
import android.util.AttributeSet
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
-import androidx.view.isVisible
-import androidx.view.setPadding
+import androidx.core.view.isVisible
+import androidx.core.view.setPadding
import com.airbnb.lottie.samples.R
import com.airbnb.lottie.samples.getText
import kotlinx.android.synthetic.main.item_view_control_bar.view.*
@@ -26,7 +26,6 @@
orientation = HORIZONTAL
setBackgroundResource(R.drawable.control_bar_item_view_background)
setPadding(resources.getDimensionPixelSize(R.dimen.control_bar_button_padding))
-
attrs?.let {
val typedArray = context.obtainStyledAttributes(it, R.styleable.ControlBarItemToggleView, 0, 0)
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
index 92156a5..edce66f 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
@@ -1,7 +1,7 @@
package com.airbnb.lottie.samples.views
import android.content.Context
-import android.support.v4.widget.ViewDragHelper
+import androidx.customview.widget.ViewDragHelper
import android.util.AttributeSet
import android.view.MotionEvent
import android.widget.FrameLayout
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/NoShiftBottomNavigationView.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/NoShiftBottomNavigationView.kt
index 4926596..b6df595 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/NoShiftBottomNavigationView.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/NoShiftBottomNavigationView.kt
@@ -2,13 +2,13 @@
import android.annotation.SuppressLint
import android.content.Context
-import android.support.design.internal.BottomNavigationItemView
-import android.support.design.internal.BottomNavigationMenuView
-import android.support.design.widget.BottomNavigationView
+import com.google.android.material.bottomnavigation.BottomNavigationView
import android.util.AttributeSet
import android.util.Log
import android.view.View
-import androidx.view.children
+import androidx.core.view.children
+import com.google.android.material.bottomnavigation.BottomNavigationItemView
+import com.google.android.material.bottomnavigation.BottomNavigationMenuView
private val TAG = NoShiftBottomNavigationView::class.java.name
@@ -36,7 +36,7 @@
menuView.children
.map { it as BottomNavigationItemView }
.forEach {
- it.setShiftingMode(false)
+ it.setShifting(false)
it.setChecked(it.itemData.isChecked)
}
} catch (e: NoSuchFieldException) {
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
index c26aac9..318d4d0 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
@@ -35,10 +35,10 @@
@ModelProp(options = [ModelProp.Option.DoNotHash])
fun setSearchClickListener(listener: (String) -> Unit) {
- searchButton.setOnClickListener({
+ searchButton.setOnClickListener {
val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromInputMethod(windowToken, 0)
listener(searchEditText.text.toString())
- })
+ }
}
}
\ No newline at end of file
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
index 0770b82..5923524 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
@@ -1,8 +1,8 @@
package com.airbnb.lottie.samples.views
import android.content.Context
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
import android.util.AttributeSet
import com.airbnb.epoxy.EpoxyController
import com.airbnb.epoxy.EpoxyRecyclerView
@@ -21,7 +21,7 @@
private var items: List<ShowcaseItem>? = null
init {
- layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
+ layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
buildModelsWith(this)
val sidePadding = resources.getDimensionPixelSize(R.dimen.showcase_carousel_padding)
setPadding(sidePadding, 0, sidePadding, 0)
diff --git a/LottieSample/src/main/res/layout/activity_list.xml b/LottieSample/src/main/res/layout/activity_list.xml
index 551f4df..7a3f48d 100644
--- a/LottieSample/src/main/res/layout/activity_list.xml
+++ b/LottieSample/src/main/res/layout/activity_list.xml
@@ -9,7 +9,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
- <android.support.v7.widget.Toolbar
+ <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
diff --git a/LottieSample/src/main/res/layout/bottom_sheet_key_paths.xml b/LottieSample/src/main/res/layout/bottom_sheet_key_paths.xml
index c8a3924..a45854c 100644
--- a/LottieSample/src/main/res/layout/bottom_sheet_key_paths.xml
+++ b/LottieSample/src/main/res/layout/bottom_sheet_key_paths.xml
@@ -9,7 +9,7 @@
android:background="@android:color/white"
app:behavior_hideable="true"
app:behavior_peekHeight="80dp"
- app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
+ app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<View
android:layout_width="match_parent"
diff --git a/LottieSample/src/main/res/layout/bottom_sheet_render_times.xml b/LottieSample/src/main/res/layout/bottom_sheet_render_times.xml
index 5f6a42e..ebf3e66 100644
--- a/LottieSample/src/main/res/layout/bottom_sheet_render_times.xml
+++ b/LottieSample/src/main/res/layout/bottom_sheet_render_times.xml
@@ -9,7 +9,7 @@
android:background="@android:color/white"
app:behavior_hideable="true"
app:behavior_peekHeight="80dp"
- app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
+ app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<View
android:layout_width="match_parent"
diff --git a/LottieSample/src/main/res/layout/bottom_sheet_warnings.xml b/LottieSample/src/main/res/layout/bottom_sheet_warnings.xml
index 1a06c4a..3d3148c 100644
--- a/LottieSample/src/main/res/layout/bottom_sheet_warnings.xml
+++ b/LottieSample/src/main/res/layout/bottom_sheet_warnings.xml
@@ -9,7 +9,7 @@
android:background="@android:color/white"
app:behavior_hideable="true"
app:behavior_peekHeight="80dp"
- app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
+ app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<View
android:layout_width="match_parent"
diff --git a/LottieSample/src/main/res/layout/control_bar_player_controls.xml b/LottieSample/src/main/res/layout/control_bar_player_controls.xml
index d7dc7f4..37977ec 100644
--- a/LottieSample/src/main/res/layout/control_bar_player_controls.xml
+++ b/LottieSample/src/main/res/layout/control_bar_player_controls.xml
@@ -64,7 +64,7 @@
android:textSize="10sp"/>
</RelativeLayout>
- <android.support.v7.widget.AppCompatSeekBar
+ <androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/seekBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
diff --git a/LottieSample/src/main/res/layout/control_bar_scale.xml b/LottieSample/src/main/res/layout/control_bar_scale.xml
index 48cdb04..faa2994 100644
--- a/LottieSample/src/main/res/layout/control_bar_scale.xml
+++ b/LottieSample/src/main/res/layout/control_bar_scale.xml
@@ -23,7 +23,7 @@
android:textColor="#222222"
android:textSize="14sp"/>
- <android.support.v7.widget.AppCompatSeekBar
+ <androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/scaleSeekBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
diff --git a/LottieSample/src/main/res/layout/fragment_base.xml b/LottieSample/src/main/res/layout/fragment_base.xml
index 05ad3cb..bd6a661 100644
--- a/LottieSample/src/main/res/layout/fragment_base.xml
+++ b/LottieSample/src/main/res/layout/fragment_base.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/coordinatorLayout"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/coordinatorLayout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<com.airbnb.epoxy.EpoxyRecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
-</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/LottieSample/src/main/res/layout/fragment_choose_asset.xml b/LottieSample/src/main/res/layout/fragment_choose_asset.xml
index bd2c2f7..2b6b6e4 100644
--- a/LottieSample/src/main/res/layout/fragment_choose_asset.xml
+++ b/LottieSample/src/main/res/layout/fragment_choose_asset.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <android.support.v7.widget.RecyclerView
+ <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/LottieSample/src/main/res/layout/fragment_player.xml b/LottieSample/src/main/res/layout/fragment_player.xml
index 116c80b..468fe4e 100644
--- a/LottieSample/src/main/res/layout/fragment_player.xml
+++ b/LottieSample/src/main/res/layout/fragment_player.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.design.widget.CoordinatorLayout
+<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
@@ -46,7 +46,7 @@
<include layout="@layout/control_bar" />
</LinearLayout>
- <android.support.v7.widget.Toolbar
+ <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
@@ -57,4 +57,4 @@
<include layout="@layout/bottom_sheet_render_times" />
<include layout="@layout/bottom_sheet_warnings" />
<include layout="@layout/bottom_sheet_key_paths" />
-</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/LottieSample/src/main/res/layout/fragment_warnings.xml b/LottieSample/src/main/res/layout/fragment_warnings.xml
index 8965d94..b90f48a 100644
--- a/LottieSample/src/main/res/layout/fragment_warnings.xml
+++ b/LottieSample/src/main/res/layout/fragment_warnings.xml
@@ -20,7 +20,7 @@
android:layout_height="@dimen/divider_height"
android:background="@color/divider"/>
- <android.support.v7.widget.RecyclerView
+ <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
diff --git a/LottieSample/src/main/res/layout/item_view_animation.xml b/LottieSample/src/main/res/layout/item_view_animation.xml
index bf32b3b..73f129c 100644
--- a/LottieSample/src/main/res/layout/item_view_animation.xml
+++ b/LottieSample/src/main/res/layout/item_view_animation.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_marginLeft="24dp"
- android:layout_marginRight="24dp"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_marginLeft="24dp"
+ android:layout_marginRight="24dp"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
<ImageView
android:id="@+id/animationView"
@@ -51,4 +51,4 @@
app:layout_constraintTop_toTopOf="@+id/animationView"/>
-</android.support.constraint.ConstraintLayout>
\ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/LottieSample/src/main/res/layout/item_view_showcase_demo.xml b/LottieSample/src/main/res/layout/item_view_showcase_demo.xml
index 601fa60..c935b4f 100644
--- a/LottieSample/src/main/res/layout/item_view_showcase_demo.xml
+++ b/LottieSample/src/main/res/layout/item_view_showcase_demo.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
tools:parentTag="android.widget.FrameLayout">
- <android.support.v7.widget.CardView
+ <androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="196dp"
android:layout_height="108dp"
@@ -29,5 +29,5 @@
android:layout_marginLeft="12dp"
android:textColor="@color/text_color_dark"
android:textSize="20sp"/>
- </android.support.v7.widget.CardView>
+ </androidx.cardview.widget.CardView>
</merge>
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index c43e143..e839523 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,9 +1,9 @@
import org.ajoberstar.grgit.Grgit
buildscript {
- ext.kotlinVersion = '1.2.51'
- ext.supportLibVersion = '27.1.1'
- ext.navVersion = '1.0.0-alpha04'
+ ext.kotlinVersion = '1.2.70'
+ ext.androidXVersion = '1.0.0'
+ ext.navVersion = '1.0.0-alpha06'
repositories {
jcenter()
@@ -11,7 +11,7 @@
}
dependencies {
classpath 'org.ajoberstar:grgit:1.9.3'
- classpath 'com.android.tools.build:gradle:3.1.3'
+ classpath 'com.android.tools.build:gradle:3.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlinVersion"
classpath 'org.ajoberstar:grgit:1.9.3'
@@ -25,6 +25,9 @@
maven {
url "https://jitpack.io"
}
+ maven {
+ url "https://oss.sonatype.org/content/repositories/snapshots/"
+ }
flatDir {
dirs 'libs'
}
diff --git a/gradle.properties b/gradle.properties
index c11575e..e9ce997 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -32,3 +32,5 @@
POM_DEVELOPER_NAME=Airbnb
POM_DEVELOPER_EMAIL=lottie@airbnb.com
POM_INCEPTION_YEAR=2017
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 936f240..4caf1df 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
diff --git a/lottie/build.gradle b/lottie/build.gradle
index e98d46b..0d1e038 100644
--- a/lottie/build.gradle
+++ b/lottie/build.gradle
@@ -2,12 +2,12 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 27
+ compileSdkVersion 28
resourcePrefix 'lottie_'
defaultConfig {
minSdkVersion 16
- targetSdkVersion 27
+ targetSdkVersion 28
versionCode 100
versionName "2.7.0"
}
@@ -28,10 +28,10 @@
}
dependencies {
- implementation "com.android.support:appcompat-v7:$supportLibVersion"
+ implementation "androidx.appcompat:appcompat:${androidXVersion}"
testImplementation "org.mockito:mockito-core:2.15.0"
testImplementation 'junit:junit:4.12'
- testImplementation "org.robolectric:robolectric:3.5.1"
+ testImplementation "org.robolectric:robolectric:4.0-alpha-3"
}
task javadoc(type: Javadoc) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/L.java b/lottie/src/main/java/com/airbnb/lottie/L.java
index 1e1dda9..319958b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/L.java
+++ b/lottie/src/main/java/com/airbnb/lottie/L.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie;
-import android.support.annotation.RestrictTo;
-import android.support.v4.os.TraceCompat;
+import androidx.annotation.RestrictTo;
+import androidx.core.os.TraceCompat;
import android.util.Log;
import java.util.HashSet;
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
index 9c3a379..e6c42d5 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieAnimationView.java
@@ -10,26 +10,23 @@
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.FloatRange;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RawRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.AppCompatImageView;
+import androidx.annotation.FloatRange;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RawRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.appcompat.widget.AppCompatImageView;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.JsonReader;
import android.util.Log;
import com.airbnb.lottie.model.KeyPath;
-import com.airbnb.lottie.model.LottieCompositionCache;
import com.airbnb.lottie.value.LottieFrameInfo;
import com.airbnb.lottie.value.LottieValueCallback;
import com.airbnb.lottie.value.SimpleLottieValueCallback;
-import org.json.JSONObject;
-
import java.io.StringReader;
import java.util.HashSet;
import java.util.List;
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java b/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java
index 5a0a9ce..d7578a2 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieComposition.java
@@ -3,12 +3,12 @@
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
-import android.support.annotation.Nullable;
-import android.support.annotation.RawRes;
-import android.support.annotation.RestrictTo;
-import android.support.annotation.WorkerThread;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SparseArrayCompat;
+import androidx.annotation.Nullable;
+import androidx.annotation.RawRes;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.WorkerThread;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SparseArrayCompat;
import android.util.JsonReader;
import android.util.Log;
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
index 0eb9350..02ed667 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
@@ -4,9 +4,9 @@
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.support.annotation.Nullable;
-import android.support.annotation.RawRes;
-import android.support.annotation.WorkerThread;
+import androidx.annotation.Nullable;
+import androidx.annotation.RawRes;
+import androidx.annotation.WorkerThread;
import android.util.JsonReader;
import android.util.Log;
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
index a2b3e4a..a10d594 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieDrawable.java
@@ -12,12 +12,12 @@
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.os.Build;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import android.util.Log;
import android.view.View;
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java b/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
index 33f268f..2c8f1d0 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieImageAsset.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie;
import android.graphics.Bitmap;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
/**
* Data class describing an image asset exported by bodymovin.
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieResult.java b/lottie/src/main/java/com/airbnb/lottie/LottieResult.java
index 1f290d4..5ebefe7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieResult.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieResult.java
@@ -1,9 +1,8 @@
package com.airbnb.lottie;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import java.util.Arrays;
-import java.util.Objects;
/**
* Contains class to hold the resulting value of an async task or an exception if it failed.
diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieTask.java b/lottie/src/main/java/com/airbnb/lottie/LottieTask.java
index 42ef483..785cbc1 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieTask.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieTask.java
@@ -2,8 +2,8 @@
import android.os.Handler;
import android.os.Looper;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
import android.util.Log;
import java.util.ArrayList;
diff --git a/lottie/src/main/java/com/airbnb/lottie/OnCompositionLoadedListener.java b/lottie/src/main/java/com/airbnb/lottie/OnCompositionLoadedListener.java
index 71fc341..e42956a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/OnCompositionLoadedListener.java
+++ b/lottie/src/main/java/com/airbnb/lottie/OnCompositionLoadedListener.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
/**
* @see LottieCompositionFactory
diff --git a/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java b/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java
index 0790dc5..e41cbff 100644
--- a/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java
+++ b/lottie/src/main/java/com/airbnb/lottie/PerformanceTracker.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie;
-import android.support.v4.util.ArraySet;
-import android.support.v4.util.Pair;
+import androidx.collection.ArraySet;
+import androidx.core.util.Pair;
import android.util.Log;
import com.airbnb.lottie.utils.MeanCalculator;
diff --git a/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java b/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java
index 30e9eb3..c6a21ef 100644
--- a/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java
+++ b/lottie/src/main/java/com/airbnb/lottie/SimpleColorFilter.java
@@ -2,7 +2,7 @@
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
-import android.support.annotation.ColorInt;
+import androidx.annotation.ColorInt;
/**
* A color filter with a predefined transfer mode that applies the specified color on top of the
diff --git a/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java b/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java
index 7784a6b..1682f97 100644
--- a/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java
+++ b/lottie/src/main/java/com/airbnb/lottie/TextDelegate.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import java.util.HashMap;
import java.util.Map;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
index 2c489ac..809d401 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
@@ -8,14 +8,13 @@
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.graphics.RectF;
-import android.support.annotation.CallSuper;
-import android.support.annotation.Nullable;
+import androidx.annotation.CallSuper;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
-import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation;
import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation;
import com.airbnb.lottie.model.KeyPath;
import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java
index 9433e66..306c96f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/ContentGroup.java
@@ -4,7 +4,7 @@
import android.graphics.Matrix;
import android.graphics.Path;
import android.graphics.RectF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/EllipseContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/EllipseContent.java
index 40739d8..dbc4ffb 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/EllipseContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/EllipseContent.java
@@ -2,7 +2,7 @@
import android.graphics.Path;
import android.graphics.PointF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
index 06d8130..8312b56 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
@@ -6,7 +6,7 @@
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieDrawable;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
index 863d391..58f4afb 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
@@ -10,9 +10,9 @@
import android.graphics.RadialGradient;
import android.graphics.RectF;
import android.graphics.Shader;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.util.LongSparseArray;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.collection.LongSparseArray;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieDrawable;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java
index 8f7198a..29aa65e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientStrokeContent.java
@@ -7,7 +7,7 @@
import android.graphics.RadialGradient;
import android.graphics.RectF;
import android.graphics.Shader;
-import android.support.v4.util.LongSparseArray;
+import androidx.collection.LongSparseArray;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java
index c439d39..a204e41 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/PolystarContent.java
@@ -2,7 +2,7 @@
import android.graphics.Path;
import android.graphics.PointF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java
index 3254a7b..0b6ecbe 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/RectangleContent.java
@@ -3,7 +3,7 @@
import android.graphics.Path;
import android.graphics.PointF;
import android.graphics.RectF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java
index 338efec..506fb43 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/RepeaterContent.java
@@ -4,7 +4,7 @@
import android.graphics.Matrix;
import android.graphics.Path;
import android.graphics.RectF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/ShapeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/ShapeContent.java
index e1c6ef3..5d45292 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/ShapeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/ShapeContent.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.animation.content;
import android.graphics.Path;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java
index 5542d2e..3e3f449 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/StrokeContent.java
@@ -3,7 +3,7 @@
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Matrix;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java
index a2e92c7..0ef11ae 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.animation.content;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
index 04d9418..d115c36 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.animation.keyframe;
-import android.support.annotation.FloatRange;
-import android.support.annotation.Nullable;
+import androidx.annotation.FloatRange;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.value.LottieValueCallback;
import com.airbnb.lottie.value.Keyframe;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java
index 9949d8a..cc8f3b9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/PathKeyframe.java
@@ -2,7 +2,7 @@
import android.graphics.Path;
import android.graphics.PointF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieComposition;
import com.airbnb.lottie.value.Keyframe;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java
index 18ae857..3fc0ef2 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation.java
@@ -2,7 +2,7 @@
import android.graphics.Matrix;
import android.graphics.PointF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.value.LottieValueCallback;
import com.airbnb.lottie.value.ScaleXY;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java
index e0635e1..fe27111 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.animation.keyframe;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java b/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java
index fe93824..5b8b264 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.animation;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java b/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java
index a6e3ccb..c7b5e37 100644
--- a/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java
+++ b/lottie/src/main/java/com/airbnb/lottie/manager/FontAssetManager.java
@@ -3,7 +3,7 @@
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import android.util.Log;
import android.view.View;
diff --git a/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java b/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java
index 6f1764d..cb7237a 100644
--- a/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java
+++ b/lottie/src/main/java/com/airbnb/lottie/manager/ImageAssetManager.java
@@ -4,7 +4,7 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
@@ -17,7 +17,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
public class ImageAssetManager {
diff --git a/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java b/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java
index 69ae3b7..87a0854 100644
--- a/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/manager/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.manager;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java b/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java
index 82d3e5a..f150ff2 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/CubicCurveData.java
@@ -1,9 +1,9 @@
package com.airbnb.lottie.model;
import android.graphics.PointF;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
@RestrictTo(LIBRARY)
public class CubicCurveData {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java b/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java
index 50097e0..e7b8b33 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/DocumentData.java
@@ -1,9 +1,9 @@
package com.airbnb.lottie.model;
-import android.support.annotation.ColorInt;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.ColorInt;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
@RestrictTo(LIBRARY)
public class DocumentData {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/Font.java b/lottie/src/main/java/com/airbnb/lottie/model/Font.java
index f5f59cf..89be53f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/Font.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/Font.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie.model;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
@RestrictTo(LIBRARY)
public class Font {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java b/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java
index 29044d8..e09fbbd 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/FontCharacter.java
@@ -1,12 +1,12 @@
package com.airbnb.lottie.model;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
import com.airbnb.lottie.model.content.ShapeGroup;
import java.util.List;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
@RestrictTo(LIBRARY)
public class FontCharacter {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java b/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java
index 509ff71..18720e9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/KeyPath.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie.model;
-import android.support.annotation.CheckResult;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.CheckResult;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java b/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java
index df0f703..b3a095f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/KeyPathElement.java
@@ -1,13 +1,13 @@
package com.airbnb.lottie.model;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
import com.airbnb.lottie.value.LottieValueCallback;
import java.util.List;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
/**
* Any item that can be a part of a {@link KeyPath} should implement this.
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java b/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java
index 7a3f044..c8ea8f7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/LottieCompositionCache.java
@@ -1,9 +1,9 @@
package com.airbnb.lottie.model;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.util.LruCache;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.VisibleForTesting;
+import androidx.collection.LruCache;
import com.airbnb.lottie.LottieComposition;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java b/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java
index f45c425..e116601 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/MutablePair.java
@@ -1,10 +1,10 @@
package com.airbnb.lottie.model;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
-import android.support.v4.util.Pair;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
+import androidx.core.util.Pair;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
/**
* Non final version of {@link Pair}
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java
index 10056d2..1b72bb3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTextProperties.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.model.animatable;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
public class AnimatableTextProperties {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java
index a628a44..bd80786 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/AnimatableTransform.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.model.animatable;
import android.graphics.PointF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java b/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java
index 94c9917..b64d3a6 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/animatable/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.model.animatable;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ContentModel.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ContentModel.java
index 5256f8c..2e92685 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ContentModel.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ContentModel.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.model.content;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java
index cf1ecdf..090d8fe 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientFill.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.model.content;
import android.graphics.Path;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java
index 4bf5954..671aeba 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/GradientStroke.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.model.content;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java b/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java
index 5ce9fec..d9345ea 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/MergePaths.java
@@ -1,7 +1,6 @@
package com.airbnb.lottie.model.content;
-import android.support.annotation.Nullable;
-import android.util.Log;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieDrawable;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java b/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java
index 140a5df..2aa1c76 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/Repeater.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.model.content;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
index e851c21..e1413a2 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
@@ -1,8 +1,7 @@
package com.airbnb.lottie.model.content;
import android.graphics.PointF;
-import android.support.annotation.FloatRange;
-import android.util.Log;
+import androidx.annotation.FloatRange;
import com.airbnb.lottie.L;
import com.airbnb.lottie.model.CubicCurveData;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java
index ecdb17e..028b110 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeFill.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.model.content;
import android.graphics.Path;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java
index e68601e..1fabcd5 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeStroke.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.model.content;
import android.graphics.Paint;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java b/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java
index 4b31ea1..4a474d3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.model.content;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
index c8cd783..89b2790 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
@@ -1,19 +1,11 @@
package com.airbnb.lottie.model.layer;
import android.annotation.SuppressLint;
-import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
-import android.graphics.RectF;
+import android.graphics.*;
import android.os.Build;
-import android.support.annotation.CallSuper;
-import android.support.annotation.FloatRange;
-import android.support.annotation.Nullable;
-import android.util.Log;
-
+import androidx.annotation.CallSuper;
+import androidx.annotation.FloatRange;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieComposition;
import com.airbnb.lottie.LottieDrawable;
@@ -34,8 +26,14 @@
public abstract class BaseLayer
implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElement {
- private static final int SAVE_FLAGS = Canvas.CLIP_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG |
- Canvas.MATRIX_SAVE_FLAG;
+ /**
+ * These flags were in Canvas but they were deprecated and removed.
+ * TODO: test removing these on older versions of Android.
+ */
+ private static final int CLIP_SAVE_FLAG = 0x02;
+ private static final int CLIP_TO_LAYER_SAVE_FLAG = 0x10;
+ private static final int MATRIX_SAVE_FLAG = 0x01;
+ private static final int SAVE_FLAGS = CLIP_SAVE_FLAG | CLIP_TO_LAYER_SAVE_FLAG | MATRIX_SAVE_FLAG;
@Nullable
static BaseLayer forModel(
@@ -161,7 +159,7 @@
@SuppressLint("WrongConstant")
private void saveLayerCompat(Canvas canvas, RectF rect, Paint paint, boolean all) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
- // This method was deprecated in API level 26 and not recommented since 22, but its
+ // This method was deprecated in API level 26 and not recommended since 22, but its
// 2-parameter replacement is only available starting at API level 21.
canvas.saveLayer(rect, paint, all ? Canvas.ALL_SAVE_FLAG : SAVE_FLAGS);
} else {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java
index 33e55c8..97d9e25 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/CompositionLayer.java
@@ -3,9 +3,9 @@
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.RectF;
-import android.support.annotation.FloatRange;
-import android.support.annotation.Nullable;
-import android.support.v4.util.LongSparseArray;
+import androidx.annotation.FloatRange;
+import androidx.annotation.Nullable;
+import androidx.collection.LongSparseArray;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieComposition;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
index 32fee88..7f5186f 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
@@ -7,8 +7,8 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java
index 725abe9..a936208 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/Layer.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.model.layer;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieComposition;
import com.airbnb.lottie.value.Keyframe;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
index 71f0b89..6ffdb75 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/ShapeLayer.java
@@ -3,7 +3,7 @@
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.RectF;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.animation.content.Content;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
index 7696fb3..0454525 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
@@ -7,7 +7,7 @@
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java
index f176eec..7f2aa77 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/TextLayer.java
@@ -7,7 +7,7 @@
import android.graphics.Path;
import android.graphics.RectF;
import android.graphics.Typeface;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieComposition;
import com.airbnb.lottie.LottieDrawable;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java
index 8cf047b..58db6e7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.model.layer;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java b/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java
index ccd50ac..b63322e 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/NetworkCache.java
@@ -1,9 +1,9 @@
package com.airbnb.lottie.network;
import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
-import android.support.v4.util.Pair;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.core.util.Pair;
import com.airbnb.lottie.L;
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java b/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java
index 01841ab..98566d5 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/NetworkFetcher.java
@@ -1,9 +1,9 @@
package com.airbnb.lottie.network;
import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
-import android.support.v4.util.Pair;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.core.util.Pair;
import com.airbnb.lottie.L;
import com.airbnb.lottie.LottieComposition;
diff --git a/lottie/src/main/java/com/airbnb/lottie/network/package-info.java b/lottie/src/main/java/com/airbnb/lottie/network/package-info.java
index b85ad1b..7a014de 100644
--- a/lottie/src/main/java/com/airbnb/lottie/network/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/network/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.network;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableValueParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableValueParser.java
index 611fdc2..b836aad 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableValueParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/AnimatableValueParser.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.parser;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import android.util.JsonReader;
import com.airbnb.lottie.LottieComposition;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java
index 1d27cd8..1df423c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/ContentModelParser.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.parser;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import android.util.JsonReader;
import android.util.Log;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
index e53bfdb..b330693 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.parser;
import android.graphics.Color;
-import android.support.annotation.IntRange;
+import androidx.annotation.IntRange;
import android.util.JsonReader;
import android.util.JsonToken;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java b/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java
index e469caf..26b38dc 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/JsonUtils.java
@@ -2,7 +2,7 @@
import android.graphics.Color;
import android.graphics.PointF;
-import android.support.annotation.ColorInt;
+import androidx.annotation.ColorInt;
import android.util.JsonReader;
import android.util.JsonToken;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java
index 0760846..72ed856 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/KeyframeParser.java
@@ -1,9 +1,9 @@
package com.airbnb.lottie.parser;
import android.graphics.PointF;
-import android.support.annotation.Nullable;
-import android.support.v4.util.SparseArrayCompat;
-import android.support.v4.view.animation.PathInterpolatorCompat;
+import androidx.annotation.Nullable;
+import androidx.collection.SparseArrayCompat;
+import androidx.core.view.animation.PathInterpolatorCompat;
import android.util.JsonReader;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java
index d3670d6..c8a387d 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/LottieCompositionParser.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie.parser;
import android.graphics.Rect;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SparseArrayCompat;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SparseArrayCompat;
import android.util.JsonReader;
import com.airbnb.lottie.L;
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java b/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java
index 729a574..fa7edd8 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.parser;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java b/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
index fbeb0a2..18b4863 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
@@ -1,10 +1,10 @@
package com.airbnb.lottie.utils;
import android.animation.ValueAnimator;
-import android.support.annotation.FloatRange;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.FloatRange;
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import android.view.Choreographer;
import com.airbnb.lottie.LottieComposition;
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java b/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java
index 45b31be..e3f656b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/MiscUtils.java
@@ -2,7 +2,7 @@
import android.graphics.Path;
import android.graphics.PointF;
-import android.support.annotation.FloatRange;
+import androidx.annotation.FloatRange;
import com.airbnb.lottie.animation.content.KeyPathElementContent;
import com.airbnb.lottie.model.CubicCurveData;
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
index c0f2acf..dde5ad6 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
@@ -5,7 +5,7 @@
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.graphics.PointF;
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
import com.airbnb.lottie.L;
import com.airbnb.lottie.animation.content.TrimPathContent;
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java b/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java
index 2b4efe8..7bf2a4c 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/package-info.java
@@ -1,6 +1,6 @@
@RestrictTo(LIBRARY)
package com.airbnb.lottie.utils;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
-import static android.support.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java b/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java
index 6c1e68b..6a42077 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/Keyframe.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie.value;
import android.graphics.PointF;
-import android.support.annotation.FloatRange;
-import android.support.annotation.Nullable;
+import androidx.annotation.FloatRange;
+import androidx.annotation.Nullable;
import android.view.animation.Interpolator;
import com.airbnb.lottie.LottieComposition;
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/LottieFrameInfo.java b/lottie/src/main/java/com/airbnb/lottie/value/LottieFrameInfo.java
index 231decc..95f80df 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/LottieFrameInfo.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/LottieFrameInfo.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.value;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.RestrictTo;
/**
* Data class for use with {@link LottieValueCallback}.
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativeFloatValueCallback.java b/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativeFloatValueCallback.java
index a2db77e..cd22a42 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativeFloatValueCallback.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativeFloatValueCallback.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie.value;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.airbnb.lottie.utils.MiscUtils;
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java b/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java
index ed49510..f0a7446 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/LottieRelativePointValueCallback.java
@@ -1,7 +1,7 @@
package com.airbnb.lottie.value;
import android.graphics.PointF;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.airbnb.lottie.utils.MiscUtils;
diff --git a/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java b/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java
index a30d8f9..6e3354b 100644
--- a/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java
+++ b/lottie/src/main/java/com/airbnb/lottie/value/LottieValueCallback.java
@@ -1,8 +1,8 @@
package com.airbnb.lottie.value;
-import android.support.annotation.Nullable;
-import android.support.annotation.RestrictTo;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
diff --git a/lottie/src/test/java/com/airbnb/lottie/BaseTest.java b/lottie/src/test/java/com/airbnb/lottie/BaseTest.java
new file mode 100644
index 0000000..33ec1eb
--- /dev/null
+++ b/lottie/src/test/java/com/airbnb/lottie/BaseTest.java
@@ -0,0 +1,12 @@
+package com.airbnb.lottie;
+
+import org.junit.Ignore;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+@RunWith(RobolectricTestRunner.class)
+@Config
+@Ignore
+public class BaseTest {
+}
diff --git a/lottie/src/test/java/com/airbnb/lottie/KeyPathTest.java b/lottie/src/test/java/com/airbnb/lottie/KeyPathTest.java
index 71d26fb..45a3165 100644
--- a/lottie/src/test/java/com/airbnb/lottie/KeyPathTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/KeyPathTest.java
@@ -15,8 +15,7 @@
import static junit.framework.Assert.assertEquals;
-@RunWith(RobolectricTestRunner.class)
-public class KeyPathTest {
+public class KeyPathTest extends BaseTest {
private static final String[] V = {
"Shape Layer 1",
"Group 1",
diff --git a/lottie/src/test/java/com/airbnb/lottie/LottieCompositionFactoryTest.java b/lottie/src/test/java/com/airbnb/lottie/LottieCompositionFactoryTest.java
index 0687025..ba2c162 100644
--- a/lottie/src/test/java/com/airbnb/lottie/LottieCompositionFactoryTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/LottieCompositionFactoryTest.java
@@ -19,9 +19,7 @@
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertNull;
-@RunWith(RobolectricTestRunner.class)
-@Config(constants = BuildConfig.class)
-public class LottieCompositionFactoryTest {
+public class LottieCompositionFactoryTest extends BaseTest {
private static final String JSON = "{\"v\":\"4.11.1\",\"fr\":60,\"ip\":0,\"op\":180,\"w\":300,\"h\":300,\"nm\":\"Comp 1\",\"ddd\":0,\"assets\":[]," +
"\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0," +
"\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[150,150,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100]," +
diff --git a/lottie/src/test/java/com/airbnb/lottie/LottieDrawableTest.java b/lottie/src/test/java/com/airbnb/lottie/LottieDrawableTest.java
index 45dc654..195420e 100644
--- a/lottie/src/test/java/com/airbnb/lottie/LottieDrawableTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/LottieDrawableTest.java
@@ -1,17 +1,12 @@
package com.airbnb.lottie;
import android.graphics.Rect;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SparseArrayCompat;
-
+import androidx.collection.LongSparseArray;
+import androidx.collection.SparseArrayCompat;
import com.airbnb.lottie.model.Font;
import com.airbnb.lottie.model.FontCharacter;
import com.airbnb.lottie.model.layer.Layer;
-
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.HashMap;
@@ -19,9 +14,7 @@
import static junit.framework.Assert.assertEquals;
-@RunWith(RobolectricTestRunner.class)
-@Config(constants = BuildConfig.class)
-public class LottieDrawableTest {
+public class LottieDrawableTest extends BaseTest {
@SuppressWarnings("SameParameterValue")
private LottieComposition createComposition(int startFrame, int endFrame) {
diff --git a/lottie/src/test/java/com/airbnb/lottie/LottieTaskTest.java b/lottie/src/test/java/com/airbnb/lottie/LottieTaskTest.java
index 0b28cb2..4dbb4ea 100644
--- a/lottie/src/test/java/com/airbnb/lottie/LottieTaskTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/LottieTaskTest.java
@@ -3,25 +3,15 @@
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
-import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
import java.util.concurrent.Callable;
import java.util.concurrent.Semaphore;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.*;
-@RunWith(RobolectricTestRunner.class)
-@Config(constants = BuildConfig.class)
-public class LottieTaskTest {
+public class LottieTaskTest extends BaseTest {
@Mock
public LottieListener<Integer> successListener;
diff --git a/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java b/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java
index 235a968..0ed3c86 100644
--- a/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java
@@ -3,21 +3,16 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.graphics.Rect;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SparseArrayCompat;
-
+import androidx.collection.LongSparseArray;
+import androidx.collection.SparseArrayCompat;
import com.airbnb.lottie.model.Font;
import com.airbnb.lottie.model.FontCharacter;
import com.airbnb.lottie.model.layer.Layer;
import com.airbnb.lottie.utils.LottieValueAnimator;
-
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.mockito.Mockito;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.HashMap;
@@ -28,9 +23,7 @@
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.times;
-@RunWith(RobolectricTestRunner.class)
-@Config(constants = BuildConfig.class)
-public class LottieValueAnimatorUnitTest {
+public class LottieValueAnimatorUnitTest extends BaseTest {
private interface VerifyListener {
void verify(InOrder inOrder);
}
diff --git a/lottie/src/test/java/com/airbnb/lottie/PerformanceTrackerTest.java b/lottie/src/test/java/com/airbnb/lottie/PerformanceTrackerTest.java
index c71419d..f6f0bc2 100644
--- a/lottie/src/test/java/com/airbnb/lottie/PerformanceTrackerTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/PerformanceTrackerTest.java
@@ -1,6 +1,6 @@
package com.airbnb.lottie;
-import android.support.v4.util.Pair;
+import androidx.core.util.Pair;
import org.junit.Before;
import org.junit.Test;
diff --git a/lottie/src/test/java/com/airbnb/lottie/model/LottieCompositionCacheTest.java b/lottie/src/test/java/com/airbnb/lottie/model/LottieCompositionCacheTest.java
index e31567f..86842e0 100644
--- a/lottie/src/test/java/com/airbnb/lottie/model/LottieCompositionCacheTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/model/LottieCompositionCacheTest.java
@@ -1,5 +1,6 @@
package com.airbnb.lottie.model;
+import com.airbnb.lottie.BaseTest;
import com.airbnb.lottie.BuildConfig;
import com.airbnb.lottie.LottieAnimationView;
import com.airbnb.lottie.LottieComposition;
@@ -14,9 +15,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
-@RunWith(RobolectricTestRunner.class)
-@Config(constants = BuildConfig.class)
-public class LottieCompositionCacheTest {
+public class LottieCompositionCacheTest extends BaseTest {
private LottieComposition composition;
private LottieCompositionCache cache;