[Sample] Reformat code and allow null Lottiefiles preview
diff --git a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
index 0b99e9c..aad2223 100644
--- a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
+++ b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
@@ -32,6 +32,7 @@
@Test
fun testCanSetAnAnimationAndChangeItBack() {
class TestFragment : Fragment(R.layout.lottie_activity_main)
+
val scenario = launchFragmentInContainer<TestFragment>()
scenario.moveToState(Lifecycle.State.RESUMED)
scenario.onFragment { fragment ->
@@ -49,6 +50,7 @@
@Test
fun testStopsPlayingWhenDrawableSwitched() {
class TestFragment : Fragment(R.layout.lottie_activity_main)
+
val scenario = launchFragmentInContainer<TestFragment>()
scenario.moveToState(Lifecycle.State.RESUMED)
scenario.onFragment { fragment ->
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
index 17aa604..658df8f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
@@ -3,11 +3,11 @@
import android.animation.Animator
internal open class AnimatorListenerAdapter(
- val onStart: ((Animator) -> Unit)? = null,
- val onRepeat: ((Animator) -> Unit)? = null,
- val onEnd: ((Animator) -> Unit)? = null,
- val onCancel: ((Animator) -> Unit)? = null
-): Animator.AnimatorListener {
+ val onStart: ((Animator) -> Unit)? = null,
+ val onRepeat: ((Animator) -> Unit)? = null,
+ val onEnd: ((Animator) -> Unit)? = null,
+ val onCancel: ((Animator) -> Unit)? = null
+) : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) = onStart?.invoke(animation) ?: Unit
override fun onAnimationRepeat(animation: Animator) = onRepeat?.invoke(animation) ?: Unit
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
index 704e666..c0ce94e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
@@ -70,8 +70,10 @@
binding.animationView.addValueCallback(leftArm, LottieProperty.COLOR) { COLORS[colorIndex] }
binding.animationView.addValueCallback(rightArm, LottieProperty.COLOR) { COLORS[colorIndex] }
val point = PointF()
- binding.animationView.addValueCallback(KeyPath("Body"),
- LottieProperty.TRANSFORM_POSITION) { frameInfo ->
+ binding.animationView.addValueCallback(
+ KeyPath("Body"),
+ LottieProperty.TRANSFORM_POSITION
+ ) { frameInfo ->
val startX = frameInfo.startValue.x
var startY = frameInfo.startValue.y
var endY = frameInfo.endValue.y
@@ -92,7 +94,7 @@
binding.jumpHeight.text = "Extra jump height ${EXTRA_JUMP[extraJumpIndex]}"
}
- fun lerp(a: Float, b: Float, @FloatRange(from = 0.0, to = 1.0) percentage: Float) = a + percentage * (b - a)
+ fun lerp(a: Float, b: Float, @FloatRange(from = 0.0, to = 1.0) percentage: Float) = a + percentage * (b - a)
companion object {
val TAG = DynamicActivity::class.simpleName
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
index ae0ad19..43a6aed 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
@@ -15,7 +15,7 @@
super.onCreate(savedInstanceState)
val textDelegate = TextDelegate(binding.dynamicTextView)
- binding.nameEditText.addTextChangedListener(object: TextWatcher {
+ binding.nameEditText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
textDelegate.setText("NAME", s.toString())
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
index 0cc1cf1..269ae98 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
@@ -15,21 +15,22 @@
private val okHttpClient by lazy {
OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
- .build() }
+ .build()
+ }
private val gson by lazy {
GsonBuilder()
- .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
- .create()
+ .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
+ .create()
}
private val retrofit by lazy {
Retrofit.Builder()
- .client(okHttpClient)
- .baseUrl("https://api.lottiefiles.com/")
- .addConverterFactory(GsonConverterFactory.create(gson))
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .build()
+ .client(okHttpClient)
+ .baseUrl("https://api.lottiefiles.com/")
+ .addConverterFactory(GsonConverterFactory.create(gson))
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .build()
}
val lottiefilesService: LottiefilesApi by lazy { retrofit.create(LottiefilesApi::class.java) }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
index 3802308..3f3d394 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
@@ -14,10 +14,9 @@
import com.airbnb.lottie.LottieComposition
import com.airbnb.lottie.LottieCompositionFactory
import com.airbnb.lottie.LottieDrawable
-import java.util.*
class LottieFontViewGroup @JvmOverloads constructor(
- context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+ context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val views = ArrayList<View>()
@@ -26,16 +25,16 @@
init {
isFocusableInTouchMode = true
LottieCompositionFactory.fromAsset(context, "Mobilo/BlinkingCursor.json")
- .addListener {
- cursorView.layoutParams = LayoutParams(
- ViewGroup.LayoutParams.WRAP_CONTENT,
- ViewGroup.LayoutParams.WRAP_CONTENT
- )
- cursorView.setComposition(it)
- cursorView.repeatCount = LottieDrawable.INFINITE
- cursorView.playAnimation()
- addView(cursorView)
- }
+ .addListener {
+ cursorView.layoutParams = LayoutParams(
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT
+ )
+ cursorView.setComposition(it)
+ cursorView.repeatCount = LottieDrawable.INFINITE
+ cursorView.playAnimation()
+ addView(cursorView)
+ }
}
private fun addSpace() {
@@ -100,8 +99,10 @@
currentX = paddingLeft
currentY += view.measuredHeight
}
- view.layout(currentX, currentY, currentX + view.measuredWidth,
- currentY + view.measuredHeight)
+ view.layout(
+ currentX, currentY, currentX + view.measuredWidth,
+ currentY + view.measuredHeight
+ )
currentX += view.width
}
}
@@ -149,7 +150,7 @@
// }
val fileName = "Mobilo/$letter.json"
LottieCompositionFactory.fromAsset(context, fileName)
- .addListener { addComposition(it) }
+ .addListener { addComposition(it) }
return true
}
@@ -174,8 +175,8 @@
private fun addComposition(composition: LottieComposition) {
val lottieAnimationView = LottieAnimationView(context)
lottieAnimationView.layoutParams = LayoutParams(
- ViewGroup.LayoutParams.WRAP_CONTENT,
- ViewGroup.LayoutParams.WRAP_CONTENT
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT
)
lottieAnimationView.setComposition(composition)
lottieAnimationView.playAnimation()
@@ -190,8 +191,8 @@
private fun createSpaceView(): View {
val spaceView = View(context)
spaceView.layoutParams = LayoutParams(
- resources.getDimensionPixelSize(R.dimen.font_space_width),
- ViewGroup.LayoutParams.WRAP_CONTENT
+ resources.getDimensionPixelSize(R.dimen.font_space_width),
+ ViewGroup.LayoutParams.WRAP_CONTENT
)
spaceView.tag = "Space"
return spaceView
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
index 69013a5..9d747df 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
@@ -7,7 +7,12 @@
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewModelScope
-import androidx.paging.*
+import androidx.paging.Pager
+import androidx.paging.PagingConfig
+import androidx.paging.PagingDataAdapter
+import androidx.paging.PagingSource
+import androidx.paging.PagingState
+import androidx.paging.cachedIn
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.airbnb.lottie.samples.api.LottiefilesApi
@@ -19,15 +24,20 @@
import com.airbnb.lottie.samples.utils.hideKeyboard
import com.airbnb.lottie.samples.utils.viewBinding
import com.airbnb.lottie.samples.views.AnimationItemView
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.BaseMvRxFragment
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.ViewModelContext
+import com.airbnb.mvrx.fragmentViewModel
+import com.airbnb.mvrx.withState
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
data class LottiefilesState(
- val mode: LottiefilesMode = LottiefilesMode.Recent,
- val query: String = ""
+ val mode: LottiefilesMode = LottiefilesMode.Recent,
+ val query: String = ""
) : MvRxState
class LottiefilesViewModel(initialState: LottiefilesState, private val api: LottiefilesApi) : MvRxViewModel<LottiefilesState>(initialState) {
@@ -61,9 +71,9 @@
}
class LottiefilesDataSource(
- private val api: LottiefilesApi,
- val mode: LottiefilesMode,
- private val query: String
+ private val api: LottiefilesApi,
+ val mode: LottiefilesMode,
+ private val query: String
) : PagingSource<Int, AnimationData>() {
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, AnimationData> {
@@ -82,9 +92,9 @@
}
LoadResult.Page(
- response.data,
- if (page == 1) null else page + 1,
- (page + 1).takeIf { page < response.lastPage }
+ response.data,
+ if (page == 1) null else page + 1,
+ (page + 1).takeIf { page < response.lastPage }
)
} catch (e: Exception) {
LoadResult.Error(e)
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
index 10dfe39..80a6a7f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
@@ -3,16 +3,16 @@
import androidx.viewpager.widget.ViewPager
internal open class OnPageChangeListenerAdapter(
- private val onPageScrollStateChanged: ((state: Int) -> Unit)? = null,
- private val onPageScrolled:
- ((position: Int, positionOffset: Float, positionOffsetPixels: Int) -> Unit)? = null,
- private val onPageSelected: ((position: Int) -> Unit)? = null
-): ViewPager.OnPageChangeListener {
+ private val onPageScrollStateChanged: ((state: Int) -> Unit)? = null,
+ private val onPageScrolled:
+ ((position: Int, positionOffset: Float, positionOffsetPixels: Int) -> Unit)? = null,
+ private val onPageSelected: ((position: Int) -> Unit)? = null
+) : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) =
- onPageScrollStateChanged?.invoke(state) ?: Unit
+ onPageScrollStateChanged?.invoke(state) ?: Unit
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) =
- onPageScrolled?.invoke(position, positionOffset, positionOffsetPixels) ?: Unit
+ onPageScrolled?.invoke(position, positionOffset, positionOffsetPixels) ?: Unit
override fun onPageSelected(position: Int) = onPageSelected?.invoke(position) ?: Unit
}
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
index 523461a..24b16c1 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
@@ -3,16 +3,16 @@
import android.widget.SeekBar
internal class OnSeekBarChangeListenerAdapter(
- private val onProgressChanged: ((seekBar: SeekBar, progress: Int, fromUser: Boolean) -> Unit)? = null,
- private val onStartTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null,
- private val onStopTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null
+ private val onProgressChanged: ((seekBar: SeekBar, progress: Int, fromUser: Boolean) -> Unit)? = null,
+ private val onStartTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null,
+ private val onStopTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null
) : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) =
- onProgressChanged?.invoke(seekBar, progress, fromUser) ?: Unit
+ onProgressChanged?.invoke(seekBar, progress, fromUser) ?: Unit
override fun onStartTrackingTouch(seekBar: SeekBar) =
- onStartTrackingTouch?.invoke(seekBar) ?: Unit
+ onStartTrackingTouch?.invoke(seekBar) ?: Unit
override fun onStopTrackingTouch(seekBar: SeekBar) =
- onStopTrackingTouch?.invoke(seekBar) ?: Unit
+ onStopTrackingTouch?.invoke(seekBar) ?: Unit
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
index 99be680..3059b4c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
@@ -12,11 +12,10 @@
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
- val args = intent.getParcelableExtra(PlayerFragment.EXTRA_ANIMATION_ARGS) ?:
- CompositionArgs(fileUri = intent.data)
+ val args = intent.getParcelableExtra(PlayerFragment.EXTRA_ANIMATION_ARGS) ?: CompositionArgs(fileUri = intent.data)
supportFragmentManager.beginTransaction()
- .add(R.id.content, PlayerFragment.forAsset(args))
- .commit()
+ .add(R.id.content, PlayerFragment.forAsset(args))
+ .commit()
}
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index 78ca26a..35cbe31 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -22,7 +22,11 @@
import androidx.transition.TransitionManager
import com.airbnb.epoxy.EpoxyController
import com.airbnb.epoxy.EpoxyRecyclerView
-import com.airbnb.lottie.*
+import com.airbnb.lottie.FontAssetDelegate
+import com.airbnb.lottie.L
+import com.airbnb.lottie.LottieAnimationView
+import com.airbnb.lottie.LottieComposition
+import com.airbnb.lottie.RenderMode
import com.airbnb.lottie.model.KeyPath
import com.airbnb.lottie.samples.databinding.PlayerFragmentBinding
import com.airbnb.lottie.samples.model.CompositionArgs
@@ -77,19 +81,19 @@
}
private val animatorListener = AnimatorListenerAdapter(
- onStart = { binding.controlBarPlayerControls.playButton.isActivated = true },
- onEnd = {
- binding.controlBarPlayerControls.playButton.isActivated = false
- binding.animationView.performanceTracker?.logRenderTimes()
- updateRenderTimesPerLayer()
- },
- onCancel = {
- binding.controlBarPlayerControls.playButton.isActivated = false
- },
- onRepeat = {
- binding.animationView.performanceTracker?.logRenderTimes()
- updateRenderTimesPerLayer()
- }
+ onStart = { binding.controlBarPlayerControls.playButton.isActivated = true },
+ onEnd = {
+ binding.controlBarPlayerControls.playButton.isActivated = false
+ binding.animationView.performanceTracker?.logRenderTimes()
+ updateRenderTimesPerLayer()
+ },
+ onCancel = {
+ binding.controlBarPlayerControls.playButton.isActivated = false
+ },
+ onRepeat = {
+ binding.animationView.performanceTracker?.logRenderTimes()
+ updateRenderTimesPerLayer()
+ }
)
@SuppressLint("SetTextI18n")
@@ -108,7 +112,7 @@
})
val args = arguments?.getParcelable<CompositionArgs>(EXTRA_ANIMATION_ARGS)
- ?: throw IllegalArgumentException("No composition args specified")
+ ?: throw IllegalArgumentException("No composition args specified")
args.animationData?.bgColorInt?.let {
binding.controlBarBackgroundColor.backgroundButton1.setBackgroundColor(it)
binding.animationContainer.setBackgroundColor(it)
@@ -145,8 +149,8 @@
viewModel.selectSubscribe(PlayerState::borderVisible) {
binding.controlBar.borderToggle.isActivated = it
binding.controlBar.borderToggle.setImageResource(
- if (it) R.drawable.ic_border_on
- else R.drawable.ic_border_off
+ if (it) R.drawable.ic_border_on
+ else R.drawable.ic_border_off
)
binding.animationView.setBackgroundResource(if (it) R.drawable.outline else 0)
}
@@ -221,24 +225,24 @@
viewModel.selectSubscribe(PlayerState::speed) {
binding.animationView.speed = it
binding.controlBarSpeed.speedButtonsContainer
- .children
- .filterIsInstance<ControlBarItemToggleView>()
- .forEach { toggleView ->
- toggleView.isActivated = toggleView.getText().replace("x", "").toFloat() == binding.animationView.speed
- }
+ .children
+ .filterIsInstance<ControlBarItemToggleView>()
+ .forEach { toggleView ->
+ toggleView.isActivated = toggleView.getText().replace("x", "").toFloat() == binding.animationView.speed
+ }
}
binding.controlBarSpeed.speedButtonsContainer
- .children
- .filterIsInstance(ControlBarItemToggleView::class.java)
- .forEach { child ->
- child.setOnClickListener {
- val speed = (it as ControlBarItemToggleView)
- .getText()
- .replace("x", "")
- .toFloat()
- viewModel.setSpeed(speed)
- }
+ .children
+ .filterIsInstance(ControlBarItemToggleView::class.java)
+ .forEach { child ->
+ child.setOnClickListener {
+ val speed = (it as ControlBarItemToggleView)
+ .getText()
+ .replace("x", "")
+ .toFloat()
+ viewModel.setSpeed(speed)
}
+ }
binding.controlBarPlayerControls.loopButton.setOnClickListener { viewModel.toggleLoop() }
@@ -250,21 +254,22 @@
binding.controlBarPlayerControls.playButton.isActivated = binding.animationView.isAnimating
binding.controlBarPlayerControls.seekBar.setOnSeekBarChangeListener(OnSeekBarChangeListenerAdapter(
- onProgressChanged = { _, progress, _ ->
- if (binding.controlBarPlayerControls.seekBar.isPressed && progress in 1..4) {
- binding.controlBarPlayerControls.seekBar.progress = 0
- return@OnSeekBarChangeListenerAdapter
- }
- if (binding.animationView.isAnimating) return@OnSeekBarChangeListenerAdapter
- binding.animationView.progress = progress / binding.controlBarPlayerControls.seekBar.max.toFloat()
+ onProgressChanged = { _, progress, _ ->
+ if (binding.controlBarPlayerControls.seekBar.isPressed && progress in 1..4) {
+ binding.controlBarPlayerControls.seekBar.progress = 0
+ return@OnSeekBarChangeListenerAdapter
}
+ if (binding.animationView.isAnimating) return@OnSeekBarChangeListenerAdapter
+ binding.animationView.progress = progress / binding.controlBarPlayerControls.seekBar.max.toFloat()
+ }
))
binding.animationView.addAnimatorUpdateListener {
binding.controlBarPlayerControls.currentFrameView.text = updateFramesAndDurationLabel(binding.animationView)
if (binding.controlBarPlayerControls.seekBar.isPressed) return@addAnimatorUpdateListener
- binding.controlBarPlayerControls.seekBar.progress = ((it.animatedValue as Float) * binding.controlBarPlayerControls.seekBar.max).roundToInt()
+ binding.controlBarPlayerControls.seekBar.progress =
+ ((it.animatedValue as Float) * binding.controlBarPlayerControls.seekBar.max).roundToInt()
}
binding.animationView.addAnimatorListener(animatorListener)
binding.controlBarPlayerControls.playButton.setOnClickListener {
@@ -279,22 +284,22 @@
}
binding.controlBarScale.scaleSeekBar.setOnSeekBarChangeListener(OnSeekBarChangeListenerAdapter(
- onProgressChanged = { _, progress, _ ->
- val minScale = minScale()
- val maxScale = maxScale()
- val scale = minScale + progress / 100f * (maxScale - minScale)
- binding.animationView.scale = scale
- binding.controlBarScale.scaleText.text = "%.0f%%".format(scale * 100)
- }
+ onProgressChanged = { _, progress, _ ->
+ val minScale = minScale()
+ val maxScale = maxScale()
+ val scale = minScale + progress / 100f * (maxScale - minScale)
+ binding.animationView.scale = scale
+ binding.controlBarScale.scaleText.text = "%.0f%%".format(scale * 100)
+ }
))
arrayOf(
- binding.controlBarBackgroundColor.backgroundButton1,
- binding.controlBarBackgroundColor.backgroundButton2,
- binding.controlBarBackgroundColor.backgroundButton3,
- binding.controlBarBackgroundColor.backgroundButton4,
- binding.controlBarBackgroundColor.backgroundButton5,
- binding.controlBarBackgroundColor.backgroundButton6
+ binding.controlBarBackgroundColor.backgroundButton1,
+ binding.controlBarBackgroundColor.backgroundButton2,
+ binding.controlBarBackgroundColor.backgroundButton3,
+ binding.controlBarBackgroundColor.backgroundButton4,
+ binding.controlBarBackgroundColor.backgroundButton5,
+ binding.controlBarBackgroundColor.backgroundButton6
).forEach { bb ->
bb.setOnClickListener {
binding.animationContainer.setBackgroundColor(bb.getColor())
@@ -364,26 +369,26 @@
val minFrameView = EditText(context)
minFrameView.setText(binding.animationView.minFrame.toInt().toString())
AlertDialog.Builder(context)
- .setTitle(R.string.min_frame_dialog)
- .setView(minFrameView)
- .setPositiveButton("Load") { _, _ ->
- viewModel.setMinFrame(minFrameView.text.toString().toIntOrNull() ?: 0)
- }
- .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
- .show()
+ .setTitle(R.string.min_frame_dialog)
+ .setView(minFrameView)
+ .setPositiveButton("Load") { _, _ ->
+ viewModel.setMinFrame(minFrameView.text.toString().toIntOrNull() ?: 0)
+ }
+ .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
+ .show()
}
private fun showMaxFrameDialog() {
val maxFrameView = EditText(context)
maxFrameView.setText(binding.animationView.maxFrame.toInt().toString())
AlertDialog.Builder(context)
- .setTitle(R.string.max_frame_dialog)
- .setView(maxFrameView)
- .setPositiveButton("Load") { _, _ ->
- viewModel.setMaxFrame(maxFrameView.text.toString().toIntOrNull() ?: 0)
- }
- .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
- .show()
+ .setTitle(R.string.max_frame_dialog)
+ .setView(maxFrameView)
+ .setPositiveButton("Load") { _, _ ->
+ viewModel.setMaxFrame(maxFrameView.text.toString().toIntOrNull() ?: 0)
+ }
+ .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
+ .show()
}
private fun View.animateVisible(visible: Boolean) {
@@ -453,9 +458,9 @@
override fun buildModels(controller: EpoxyController) {
binding.animationView.resolveKeyPath(KeyPath("**")).forEachIndexed { index, keyPath ->
BottomSheetItemViewModel_()
- .id(index)
- .text(keyPath.keysToString())
- .addTo(controller)
+ .id(index)
+ .text(keyPath.keysToString())
+ .addTo(controller)
}
}
})
@@ -471,8 +476,8 @@
binding.animationView.performanceTracker?.sortedRenderTimes?.forEach {
val view = BottomSheetItemView(requireContext()).apply {
set(
- it.first!!.replace("__container", "Total"),
- "%.2f ms".format(it.second!!)
+ it.first!!.replace("__container", "Total"),
+ "%.2f ms".format(it.second!!)
)
}
binding.bottomSheetRenderTimes.renderTimesContainer.addView(view)
@@ -498,8 +503,8 @@
val size = warnings.size
binding.controlBar.warningsButton.setText(resources.getQuantityString(R.plurals.warnings, size, size))
binding.controlBar.warningsButton.setImageResource(
- if (warnings.isEmpty()) R.drawable.ic_sentiment_satisfied
- else R.drawable.ic_sentiment_dissatisfied
+ if (warnings.isEmpty()) R.drawable.ic_sentiment_satisfied
+ else R.drawable.ic_sentiment_dissatisfied
)
}
@@ -510,8 +515,8 @@
val screenHeight = resources.displayMetrics.heightPixels.toFloat()
val bounds = state.composition()?.bounds
return@withState min(
- screenWidth / (bounds?.width()?.toFloat() ?: screenWidth),
- screenHeight / (bounds?.height()?.toFloat() ?: screenHeight)
+ screenWidth / (bounds?.width()?.toFloat() ?: screenWidth),
+ screenHeight / (bounds?.height()?.toFloat() ?: screenHeight)
) * 2f
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
index d404228..ec6e0e1 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
@@ -8,32 +8,38 @@
import com.airbnb.lottie.LottieTask
import com.airbnb.lottie.samples.model.CompositionArgs
import com.airbnb.lottie.samples.utils.MvRxViewModel
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.Async
+import com.airbnb.mvrx.Fail
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.Success
+import com.airbnb.mvrx.Uninitialized
+import com.airbnb.mvrx.ViewModelContext
import java.io.FileInputStream
import kotlin.math.max
import kotlin.math.min
data class PlayerState(
- val composition: Async<LottieComposition> = Uninitialized,
- val controlsVisible: Boolean = true,
- val controlBarVisible: Boolean = true,
- val renderGraphVisible: Boolean = false,
- val outlineMasksAndMattes: Boolean = false,
- val borderVisible: Boolean = false,
- val backgroundColorVisible: Boolean = false,
- val scaleVisible: Boolean = false,
- val speedVisible: Boolean = false,
- val trimVisible: Boolean = false,
- val useMergePaths: Boolean = false,
- val minFrame: Int = 0,
- val maxFrame: Int = 0,
- val speed: Float = 1f,
- val repeatCount: Int = ValueAnimator.INFINITE
+ val composition: Async<LottieComposition> = Uninitialized,
+ val controlsVisible: Boolean = true,
+ val controlBarVisible: Boolean = true,
+ val renderGraphVisible: Boolean = false,
+ val outlineMasksAndMattes: Boolean = false,
+ val borderVisible: Boolean = false,
+ val backgroundColorVisible: Boolean = false,
+ val scaleVisible: Boolean = false,
+ val speedVisible: Boolean = false,
+ val trimVisible: Boolean = false,
+ val useMergePaths: Boolean = false,
+ val minFrame: Int = 0,
+ val maxFrame: Int = 0,
+ val speed: Float = 1f,
+ val repeatCount: Int = ValueAnimator.INFINITE
) : MvRxState
class PlayerViewModel(
- initialState: PlayerState,
- private val application: Application
+ initialState: PlayerState,
+ private val application: Application
) : MvRxViewModel<PlayerState>(initialState) {
fun fetchAnimation(args: CompositionArgs) {
@@ -45,12 +51,12 @@
args.asset != null -> LottieCompositionFactory.fromAsset(application, args.asset, null)
else -> error("Don't know how to fetch animation for $args")
}
- .addListener {
- setState {
- copy(composition = Success(it), minFrame = it.startFrame.toInt(), maxFrame = it.endFrame.toInt())
- }
+ .addListener {
+ setState {
+ copy(composition = Success(it), minFrame = it.startFrame.toInt(), maxFrame = it.endFrame.toInt())
}
- .addFailureListener { setState { copy(composition = Fail(it)) } }
+ }
+ .addFailureListener { setState { copy(composition = Fail(it)) } }
}
private fun taskForUri(uri: Uri): LottieTask<LottieComposition> {
@@ -101,14 +107,14 @@
fun setDistractionFree(distractionFree: Boolean) = setState {
copy(
- controlsVisible = !distractionFree,
- controlBarVisible = !distractionFree,
- renderGraphVisible = false,
- borderVisible = false,
- backgroundColorVisible = false,
- scaleVisible = false,
- speedVisible = false,
- trimVisible = false
+ controlsVisible = !distractionFree,
+ controlBarVisible = !distractionFree,
+ renderGraphVisible = false,
+ borderVisible = false,
+ backgroundColorVisible = false,
+ scaleVisible = false,
+ speedVisible = false,
+ trimVisible = false
)
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
index d6ad662..96b4f09 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
@@ -6,7 +6,6 @@
import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.pm.PackageManager
-import com.google.android.material.snackbar.Snackbar
import android.widget.ArrayAdapter
import android.widget.EditText
import android.widget.Toast
@@ -15,9 +14,11 @@
import com.airbnb.lottie.samples.utils.BaseEpoxyFragment
import com.airbnb.lottie.samples.utils.hasPermission
import com.airbnb.lottie.samples.views.marquee
+import com.google.android.material.snackbar.Snackbar
private const val RC_FILE = 1000
private const val RC_CAMERA_PERMISSION = 1001
+
class PreviewFragment : BaseEpoxyFragment() {
override fun EpoxyController.buildModels() {
@@ -66,14 +67,14 @@
clickListener { _ ->
val urlOrJsonView = EditText(context)
AlertDialog.Builder(context)
- .setTitle(R.string.preview_url)
- .setView(urlOrJsonView)
- .setPositiveButton(R.string.preview_load) { _, _ ->
- val args = CompositionArgs(url = urlOrJsonView.text.toString())
- startActivity(PlayerActivity.intent(requireContext(), args))
- }
- .setNegativeButton(R.string.preview_cancel) { dialog, _ -> dialog.dismiss() }
- .show()
+ .setTitle(R.string.preview_url)
+ .setView(urlOrJsonView)
+ .setPositiveButton(R.string.preview_load) { _, _ ->
+ val args = CompositionArgs(url = urlOrJsonView.text.toString())
+ startActivity(PlayerActivity.intent(requireContext(), args))
+ }
+ .setNegativeButton(R.string.preview_cancel) { dialog, _ -> dialog.dismiss() }
+ .show()
}
}
@@ -84,14 +85,14 @@
clickListener { _ ->
val adapter = ArrayAdapter<String>(requireContext(), android.R.layout.select_dialog_item)
requireContext().assets.list("")?.asSequence()
- ?.filter { it.endsWith(".json") || it.endsWith(".zip") }
- ?.forEach { adapter.add(it) }
+ ?.filter { it.endsWith(".json") || it.endsWith(".zip") }
+ ?.forEach { adapter.add(it) }
AlertDialog.Builder(context)
- .setAdapter(adapter) { _, which ->
- val args = CompositionArgs(asset = adapter.getItem(which))
- startActivity(PlayerActivity.intent(requireContext(), args))
- }
- .show()
+ .setAdapter(adapter) { _, which ->
+ val args = CompositionArgs(asset = adapter.getItem(which))
+ startActivity(PlayerActivity.intent(requireContext(), args))
+ }
+ .show()
}
}
}
@@ -99,7 +100,7 @@
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode != Activity.RESULT_OK) return
when (requestCode) {
- RC_FILE-> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(fileUri = data?.data)))
+ RC_FILE -> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(fileUri = data?.data)))
}
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
index 42e068f..154c1e4 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
@@ -13,9 +13,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class PreviewItemView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
private val binding: ListItemPreviewBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
index 3379dd2..8b0a095 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
@@ -12,7 +12,13 @@
import com.airbnb.lottie.samples.views.loadingView
import com.airbnb.lottie.samples.views.marquee
import com.airbnb.lottie.samples.views.showcaseCarousel
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.Async
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.Uninitialized
+import com.airbnb.mvrx.ViewModelContext
+import com.airbnb.mvrx.fragmentViewModel
+import com.airbnb.mvrx.withState
data class ShowcaseState(val response: Async<AnimationResponseV2> = Uninitialized) : MvRxState
@@ -34,21 +40,21 @@
class ShowcaseFragment : BaseEpoxyFragment() {
private val showcaseItems = listOf(
- ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_dynamic_properties) {
- startActivity(Intent(requireContext(), DynamicActivity::class.java))
- },
- ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_animated_text) {
- startActivity(Intent(requireContext(), TypographyDemoActivity::class.java))
- },
- ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_dynamic_text) {
- startActivity(Intent(requireContext(), DynamicTextActivity::class.java))
- },
- ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_bullseye) {
- startActivity(Intent(requireContext(), BullseyeActivity::class.java))
- },
- ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_recycler_view) {
- startActivity(Intent(requireContext(), WishListActivity::class.java))
- }
+ ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_dynamic_properties) {
+ startActivity(Intent(requireContext(), DynamicActivity::class.java))
+ },
+ ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_animated_text) {
+ startActivity(Intent(requireContext(), TypographyDemoActivity::class.java))
+ },
+ ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_dynamic_text) {
+ startActivity(Intent(requireContext(), DynamicTextActivity::class.java))
+ },
+ ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_bullseye) {
+ startActivity(Intent(requireContext(), BullseyeActivity::class.java))
+ },
+ ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_recycler_view) {
+ startActivity(Intent(requireContext(), WishListActivity::class.java))
+ }
)
private val viewModel: ShowcaseViewModel by fragmentViewModel()
@@ -73,7 +79,7 @@
animationItemView {
id(it.id)
title(it.title)
- previewUrl("https://assets9.lottiefiles.com/${it.preview}")
+ if (it.preview != null) previewUrl("https://assets9.lottiefiles.com/${it.preview}")
previewBackgroundColor(it.bgColorInt)
onClickListener { _ -> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(animationDataV2 = it))) }
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
index 4cd5fab..b2352d6 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
@@ -23,7 +23,7 @@
val assetName = intent.extras?.getString("animation") ?: ""
val start = System.currentTimeMillis()
composition = LottieCompositionFactory.fromAssetSync(this, assetName, null).value
- ?: throw IllegalArgumentException("Invalid composition $assetName")
+ ?: throw IllegalArgumentException("Invalid composition $assetName")
Toast.makeText(this@SimpleAnimationActivity, "Done ${System.currentTimeMillis() - start}", Toast.LENGTH_SHORT).show()
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
index 9e7ce50..2275295 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
@@ -2,16 +2,16 @@
import android.annotation.SuppressLint
import android.content.Context
-import androidx.customview.widget.ViewDragHelper
import android.util.AttributeSet
import android.view.Gravity
import android.view.MotionEvent
import android.view.View
import android.widget.FrameLayout
import android.widget.ImageView
+import androidx.customview.widget.ViewDragHelper
class TrimView @JvmOverloads constructor(
- context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+ context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val leftAnchor by lazy {
@@ -26,7 +26,7 @@
}
private lateinit var callback: (Float, Float) -> Unit
- private val dragHelper = ViewDragHelper.create(this, object: ViewDragHelper.Callback() {
+ private val dragHelper = ViewDragHelper.create(this, object : ViewDragHelper.Callback() {
override fun tryCaptureView(child: View, pointerId: Int) = true
override fun getViewHorizontalDragRange(child: View) = width
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
index 6234362..07194de 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
@@ -6,13 +6,13 @@
@Parcelize
data class AnimationData(
- val id: Long,
- val title: String,
- val description: String?,
- private val bgColor: String?,
- val preview: String?,
- val lottieLink: String,
- val userInfo: UserInfo?
+ val id: Long,
+ val title: String,
+ val description: String?,
+ private val bgColor: String?,
+ val preview: String?,
+ val lottieLink: String,
+ val userInfo: UserInfo?
) : Parcelable {
val bgColorInt get() = bgColor.toColorIntSafe()
}
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
index 4f45257..fa81035 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
@@ -7,11 +7,11 @@
@Parcelize
data class AnimationDataV2(
- @SerializedName("bg_color") val bgColor: String,
- @SerializedName("file") val file: String,
- @SerializedName("id") val id: Int,
- @SerializedName("preview") val preview: String,
- @SerializedName("title") val title: String,
+ @SerializedName("bg_color") val bgColor: String = "",
+ @SerializedName("file") val file: String = "",
+ @SerializedName("id") val id: Int,
+ @SerializedName("preview") val preview: String? = "",
+ @SerializedName("title") val title: String = "",
) : Parcelable {
val bgColorInt get() = bgColor.toColorIntSafe()
}
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
index c5d3897..d23991e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
@@ -7,14 +7,14 @@
@SuppressWarnings("ParcelCreator")
@Parcelize
data class AnimationResponse(
- val currentPage: Int,
- val data: List<AnimationData>,
- val from: String,
- val lastPage: Int,
- val nextPageUrl: String?,
- val path: String,
- val perPage: Int,
- val prevPageUrl: String,
- val to: Int,
- val total: Int
+ val currentPage: Int,
+ val data: List<AnimationData>,
+ val from: String,
+ val lastPage: Int,
+ val nextPageUrl: String?,
+ val path: String,
+ val perPage: Int,
+ val prevPageUrl: String,
+ val to: Int,
+ val total: Int
) : Parcelable
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
index ed31989..3a8381d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
@@ -1,5 +1,5 @@
package com.airbnb.lottie.samples.model
data class AnimationResponseV2(
- val data: List<AnimationDataV2> = emptyList(),
+ val data: List<AnimationDataV2> = emptyList(),
)
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
index 1544a35..61d461e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
@@ -9,13 +9,13 @@
@SuppressLint("ParcelCreator")
@Parcelize
data class CompositionArgs(
- val assetName: String? = null,
- val url: String? = null,
- val fileUri: Uri? = null,
- val asset: String? = null,
- val animationData: AnimationData? = null,
- val animationDataV2: AnimationDataV2? = null
+ val assetName: String? = null,
+ val url: String? = null,
+ val fileUri: Uri? = null,
+ val asset: String? = null,
+ val animationData: AnimationData? = null,
+ val animationDataV2: AnimationDataV2? = null
) : Parcelable {
- @IgnoredOnParcel
- val isJson = (url ?: animationData?.lottieLink ?: animationDataV2?.file)?.endsWith("json") == true
+ @IgnoredOnParcel
+ val isJson = (url ?: animationData?.lottieLink ?: animationDataV2?.file)?.endsWith("json") == true
}
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
index 38c5d10..161211f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
@@ -4,7 +4,7 @@
import androidx.annotation.StringRes
data class ShowcaseItem(
- @DrawableRes val drawableRes: Int,
- @StringRes val titleRes: Int,
- val clickListener: () -> Unit
+ @DrawableRes val drawableRes: Int,
+ @StringRes val titleRes: Int,
+ val clickListener: () -> Unit
)
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
index 66c6a7d..c6ef912 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
@@ -7,13 +7,13 @@
@SuppressWarnings("ParcelCreator")
@Parcelize
data class UserInfo(
- val id: Long,
- val name: String,
- val bio: String?,
- val location: String?,
- val city: String?,
- val social_twitter: String?,
- val social_dribbble: String?,
- val social_behance: String?,
- val url: String?
+ val id: Long,
+ val name: String,
+ val bio: String?,
+ val location: String?,
+ val city: String?,
+ val social_twitter: String?,
+ val social_dribbble: String?,
+ val social_behance: String?,
+ val url: String?
) : Parcelable
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
index 3393702..e6248c2 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
@@ -16,8 +16,8 @@
inline fun <reified T : ViewBinding> Activity.viewBinding() = ActivityViewBindingDelegate(T::class.java, this)
class ActivityViewBindingDelegate<T : ViewBinding>(
- private val bindingClass: Class<T>,
- val activity: Activity
+ private val bindingClass: Class<T>,
+ val activity: Activity
) : ReadOnlyProperty<Activity, T> {
private var binding: T? = null
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
index 04889ad..805cf4c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
@@ -10,7 +10,7 @@
private class BaseEpoxyController(
- private val buildModelsCallback: EpoxyController.() -> Unit
+ private val buildModelsCallback: EpoxyController.() -> Unit
) : AsyncEpoxyController() {
override fun buildModels() {
buildModelsCallback()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
index bcc1883..bcda8a8 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
@@ -10,8 +10,8 @@
* This uses [Dispatchers.Main.immediate] by default to mimic [viewModelScope].
*/
fun <T : Any?> (suspend () -> T).execute(
- dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
- reducer: S.(Async<T>) -> S
+ dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
+ reducer: S.(Async<T>) -> S
): Job {
setState { reducer(Loading()) }
return viewModelScope.launch(dispatcher) {
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
index cc5ec21..4c7a660 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
@@ -10,13 +10,6 @@
import android.os.VibrationEffect
import android.os.Vibrator
import android.util.Log
-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
@@ -24,23 +17,30 @@
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.ColorInt
+import androidx.annotation.DrawableRes
+import androidx.annotation.LayoutRes
+import androidx.annotation.StringRes
+import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService
import androidx.core.graphics.toColorInt
+import androidx.fragment.app.Fragment
+import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
import com.airbnb.lottie.L
import com.bumptech.glide.Glide
+import com.google.android.material.snackbar.Snackbar
fun Fragment.startActivity(cls: Class<*>) {
startActivity(Intent(context, cls))
}
fun String.urlIntent(): Intent =
- Intent(Intent.ACTION_VIEW).setData(Uri.parse(this))
+ Intent(Intent.ACTION_VIEW).setData(Uri.parse(this))
fun ViewGroup.inflate(@LayoutRes layout: Int, attachToRoot: Boolean = true): View =
- LayoutInflater.from(context).inflate(layout, this, attachToRoot)
+ LayoutInflater.from(context).inflate(layout, this, attachToRoot)
fun String.hasPermission(context: Context): Boolean =
- ContextCompat.checkSelfPermission(context, this) == PackageManager.PERMISSION_GRANTED
+ ContextCompat.checkSelfPermission(context, this) == PackageManager.PERMISSION_GRANTED
fun TextView.setDrawableLeft(@DrawableRes drawableRes: Int, activity: Activity) {
val drawable = VectorDrawableCompat.create(resources, drawableRes, activity.theme)
@@ -48,7 +48,7 @@
}
fun View.showSnackbarLong(@StringRes message: Int) =
- showSnackbarLong(resources.getString(message))
+ showSnackbarLong(resources.getString(message))
fun View.showSnackbarLong(message: String) =
Snackbar.make(this, message, Snackbar.LENGTH_LONG).show()
@@ -90,15 +90,15 @@
when (bgColor.length) {
0 -> "#ffffff"
4 -> "#%c%c%c%c%c%c".format(
- bgColor[1], bgColor[1],
- bgColor[2], bgColor[2],
- bgColor[3], bgColor[3]
+ bgColor[1], bgColor[1],
+ bgColor[2], bgColor[2],
+ bgColor[3], bgColor[3]
)
5 -> "#%c%c%c%c%c%c%c%c".format(
- bgColor[1], bgColor[1],
- bgColor[2], bgColor[2],
- bgColor[3], bgColor[3],
- bgColor[4], bgColor[4]
+ bgColor[1], bgColor[1],
+ bgColor[2], bgColor[2],
+ bgColor[3], bgColor[3],
+ bgColor[4], bgColor[4]
)
else -> bgColor
}.toColorInt()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
index 49123a2..48a58c4 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
@@ -16,8 +16,8 @@
inline fun <reified T : ViewBinding> ViewGroup.viewBinding() = ViewBindingDelegate(T::class.java, this)
class ViewBindingDelegate<T : ViewBinding>(
- private val bindingClass: Class<T>,
- val view: ViewGroup
+ private val bindingClass: Class<T>,
+ val view: ViewGroup
) : ReadOnlyProperty<ViewGroup, T> {
private var binding: T? = null
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
index c372e09..9df8142 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
@@ -14,9 +14,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class AnimationItemView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val binding: ItemViewShowcaseAnimationBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
index 3e0f11a..b95485d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
@@ -6,16 +6,16 @@
import android.graphics.Color
import android.graphics.Paint
import android.graphics.drawable.ColorDrawable
-import androidx.annotation.ColorInt
-import androidx.core.content.ContextCompat
import android.util.AttributeSet
import android.view.View
+import androidx.annotation.ColorInt
+import androidx.core.content.ContextCompat
import com.airbnb.lottie.samples.R
class BackgroundColorView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleInt: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleInt: Int = 0
) : View(context, attrs, defStyleInt) {
private val paint = Paint().apply {
@@ -32,7 +32,7 @@
val r = cx.coerceAtMost(cy)
if (getColor() == Color.WHITE) {
paint.strokeWidth =
- resources.getDimensionPixelSize(R.dimen.background_color_view_stroke_width).toFloat()
+ resources.getDimensionPixelSize(R.dimen.background_color_view_stroke_width).toFloat()
paint.style = Paint.Style.STROKE
paint.color = ContextCompat.getColor(context, R.color.background_color1_stroke)
} else {
@@ -42,5 +42,6 @@
canvas.drawCircle(cx, cy, r - paint.strokeWidth, paint)
}
- @ColorInt fun getColor() = (background as ColorDrawable).color
+ @ColorInt
+ fun getColor() = (background as ColorDrawable).color
}
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
index 4986ea1..0168ff9 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
@@ -13,9 +13,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class BottomSheetItemView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val binding: ItemViewBottomSheetBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
index 0b2d990..ee5be86 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
@@ -17,9 +17,9 @@
import com.airbnb.lottie.samples.utils.viewBinding
class ControlBarItemToggleView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
private val binding: ItemViewControlBarBinding by viewBinding()
@@ -50,8 +50,8 @@
super.childDrawableStateChanged(child)
if (child is ImageView && child.drawable != null) {
val color =
- if (child.isActivated) Color.WHITE
- else ContextCompat.getColor(context, R.color.control_bar_content_unactivated)
+ if (child.isActivated) Color.WHITE
+ else ContextCompat.getColor(context, R.color.control_bar_content_unactivated)
DrawableCompat.setTint(child.drawable.mutate(), color)
}
}
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
index edce66f..d078e4e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
@@ -1,15 +1,15 @@
package com.airbnb.lottie.samples.views
import android.content.Context
-import androidx.customview.widget.ViewDragHelper
import android.util.AttributeSet
import android.view.MotionEvent
import android.widget.FrameLayout
+import androidx.customview.widget.ViewDragHelper
class InterceptingFrameLayout @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
var viewDragHelper: ViewDragHelper? = null
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
index 01fc7a8..8da9f1a 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
@@ -12,9 +12,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class ListingCard @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val binding: ListingCardBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
index 37ee501..cf80401 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
@@ -9,9 +9,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class LoadingView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
init {
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
index 4fa8cd3..9daef53 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
@@ -11,9 +11,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class LottiefilesTabBar @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
private val binding: LottiefilesTabBarBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
index 350c504..5d9da44 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
@@ -13,9 +13,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class Marquee @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
private val binding: MarqueeBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
index d384a60..b79971c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
@@ -10,9 +10,9 @@
import kotlinx.coroutines.flow.StateFlow
class SearchInputItemView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val binding: ItemViewSearchInputBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
index a9dc8fe..985e631 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
@@ -11,9 +11,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class SectionHeaderView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val binding: SectionHeaderViewBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
index b8097dc..5680dae 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
@@ -12,9 +12,9 @@
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class ShowcaseCarousel @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : EpoxyRecyclerView(context, attrs, defStyleAttr), EpoxyRecyclerView.ModelBuilderCallback {
private var items: List<ShowcaseItem>? = null
@@ -35,9 +35,9 @@
override fun buildModels(controller: EpoxyController) {
items?.forEach {
ShowcaseDemoItemViewModel_()
- .id(it.titleRes)
- .showcaseItem(it)
- .addTo(controller)
+ .id(it.titleRes)
+ .showcaseItem(it)
+ .addTo(controller)
}
}
}
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
index 7f2b743..2ba801e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
@@ -11,9 +11,9 @@
@ModelView(autoLayout = ModelView.Size.WRAP_WIDTH_WRAP_HEIGHT)
class ShowcaseDemoItemView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
private val binding: ItemViewShowcaseDemoBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
index 9151da6..766b947 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
@@ -9,9 +9,9 @@
import com.airbnb.lottie.samples.utils.viewBinding
class TabBarItemView @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
private val binding: TabItemBinding by viewBinding()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
index 1a78533..df7899d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
@@ -5,7 +5,7 @@
import com.airbnb.lottie.LottieAnimationView
class WishListIconView @JvmOverloads constructor(
- context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+ context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : LottieAnimationView(context, attrs, defStyleAttr) {
fun toggleWishlisted() {