diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/ThemedMaterialSwitch.kt b/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/ThemedMaterialSwitch.kt index 10932e58..d2cc6a72 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/ThemedMaterialSwitch.kt +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/customviews/ThemedMaterialSwitch.kt @@ -6,6 +6,7 @@ import android.content.res.ColorStateList import android.util.AttributeSet import com.google.android.material.materialswitch.MaterialSwitch import ml.docilealligator.infinityforreddit.Infinity +import ml.docilealligator.infinityforreddit.utils.getMaterialSwitchTrackColorFromThumbColor class ThemedMaterialSwitch @JvmOverloads constructor( context: Context, @@ -21,7 +22,7 @@ class ThemedMaterialSwitch @JvmOverloads constructor( intArrayOf(R.attr.state_checked) ) val colors = intArrayOf( - customThemeWrapper.colorPrimary + getMaterialSwitchTrackColorFromThumbColor(customThemeWrapper.colorAccent) ) setTrackTintList(ColorStateList(states, colors)) } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/ColorUtils.kt b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/ColorUtils.kt new file mode 100644 index 00000000..914f732d --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/ColorUtils.kt @@ -0,0 +1,13 @@ +package ml.docilealligator.infinityforreddit.utils + +import android.graphics.Color +import androidx.core.graphics.ColorUtils + +fun getMaterialSwitchTrackColorFromThumbColor(thumbColor: Int): Int { + val blendedColor = if (ColorUtils.calculateLuminance(thumbColor) < 0.5) Color.WHITE else Color.BLACK + val originalAlpha = Color.alpha(thumbColor) + val opaqueThumbColor = ColorUtils.setAlphaComponent(thumbColor, 255) + val opaqueNewColor = ColorUtils.blendARGB(opaqueThumbColor, blendedColor, 0.6f) + + return ColorUtils.setAlphaComponent(opaqueNewColor, originalAlpha) +} \ No newline at end of file