[Sample App] Improve input validation for trimming
Fixes #781
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index 3a3b3ed..98e1e33 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -28,6 +28,7 @@
import com.airbnb.lottie.samples.views.BottomSheetItemView
import com.airbnb.lottie.samples.views.BottomSheetItemViewModel_
import com.airbnb.lottie.samples.views.ControlBarItemToggleView
+import com.airbnb.lottie.utils.MiscUtils
import com.github.mikephil.charting.components.LimitLine
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.data.Entry
@@ -219,10 +220,10 @@
.setTitle(R.string.min_frame_dialog)
.setView(minFrameView)
.setPositiveButton("Load") { _, _ ->
- animationView.setMinFrame(
- minFrameView.parseIntOrNull() ?:
- 0
- )
+ var frame = minFrameView.text.toString().toFloatOrNull() ?: 0f
+ frame = MiscUtils.clamp(frame, composition?.startFrame ?: frame, animationView.maxFrame)
+
+ animationView.setMinFrame(frame.toInt())
updateUiFromState()
}
.setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
@@ -236,11 +237,9 @@
.setTitle(R.string.max_frame_dialog)
.setView(maxFrameView)
.setPositiveButton("Load") { _, _ ->
- animationView.setMaxFrame(
- maxFrameView.parseIntOrNull() ?:
- composition?.endFrame?.toInt() ?:
- 0
- )
+ var frame = maxFrameView.text.toString().toFloatOrNull() ?: 0f
+ frame = MiscUtils.clamp(frame, animationView.minFrame, composition?.endFrame ?: frame)
+ animationView.setMaxFrame(frame.toInt())
updateUiFromState()
}
.setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
diff --git a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt
index 90ec84e..63d19f3 100644
--- a/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt
+++ b/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/TypeExtensions.kt
@@ -62,14 +62,6 @@
fun View.getText(@StringRes res: Int) = this.resources.getText(res)
operator fun Boolean.inc() = !this
-fun EditText.parseIntOrNull(): Int? {
- return try {
- Integer.parseInt(text.toString())
- } catch (e: NumberFormatException) {
- null
- }
-}
-
fun Context.hasPermission(permission: String): Boolean {
return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED
}