[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() {