From f033534b806aa1a112b798b8fd77fb60d81104f0 Mon Sep 17 00:00:00 2001 From: Patryk Michalik Date: Thu, 25 Mar 2021 11:14:43 +0100 Subject: [PATCH] `SliderPreference`: Fix crash when rounding `value` --- .../lawnchair/ui/preferences/SliderPreference.kt | 4 ++-- lawnchair/src/app/lawnchair/util/Math.kt | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 lawnchair/src/app/lawnchair/util/Math.kt diff --git a/lawnchair/src/app/lawnchair/ui/preferences/SliderPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/SliderPreference.kt index 38240e57f2..af57395e27 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/SliderPreference.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/SliderPreference.kt @@ -7,7 +7,7 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import java.text.DecimalFormat +import app.lawnchair.util.round import kotlin.math.roundToInt @Composable @@ -37,7 +37,7 @@ fun SliderPreference( ) { Text( text = if (showAsPercentage) { - "${(DecimalFormat("#.#").format(value).toFloat() * 100).toInt()}%" + "${(value.round(2) * 100).toInt()}%" } else { "${value.roundToInt()}" } diff --git a/lawnchair/src/app/lawnchair/util/Math.kt b/lawnchair/src/app/lawnchair/util/Math.kt new file mode 100644 index 0000000000..384690a391 --- /dev/null +++ b/lawnchair/src/app/lawnchair/util/Math.kt @@ -0,0 +1,15 @@ +package app.lawnchair.util + +import java.text.DecimalFormat +import java.text.DecimalFormatSymbols + +fun Float.round(decimals: Int): Float { + val symbols = DecimalFormatSymbols() + symbols.decimalSeparator = '.' + val format = DecimalFormat() + format.decimalFormatSymbols = symbols + format.applyPattern( + "#.${"#".repeat(decimals)}" + ) + return format.format(this).toFloat() +} \ No newline at end of file