Added new theme for Material You & a toggle
This commit is contained in:
parent
289557898e
commit
f23b102e41
34 changed files with 243 additions and 123 deletions
|
@ -37,6 +37,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
|
|||
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||
import code.name.monkey.retromusic.App
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil.materialYou
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
|
@ -84,23 +85,32 @@ fun Fragment.resolveColor(@AttrRes attr: Int, fallBackColor: Int = 0) =
|
|||
fun Dialog.resolveColor(@AttrRes attr: Int, fallBackColor: Int = 0) =
|
||||
ATHUtil.resolveColor(context, attr, fallBackColor)
|
||||
|
||||
// Don't apply accent colors if Material You is enabled
|
||||
// Material Components will take care of applying material you colors
|
||||
fun CheckBox.addAccentColor() {
|
||||
if (materialYou) return
|
||||
buttonTintList = ColorStateList.valueOf(ThemeStore.accentColor(context))
|
||||
}
|
||||
|
||||
fun SeekBar.addAccentColor() {
|
||||
if (materialYou) return
|
||||
val colorState = ColorStateList.valueOf(ThemeStore.accentColor(context))
|
||||
progressTintList = colorState
|
||||
thumbTintList = colorState
|
||||
}
|
||||
|
||||
fun Button.accentTextColor() = setTextColor(ThemeStore.accentColor(App.getContext()))
|
||||
fun Button.accentTextColor() {
|
||||
if (materialYou) return
|
||||
setTextColor(ThemeStore.accentColor(App.getContext()))
|
||||
}
|
||||
|
||||
fun MaterialButton.accentBackgroundColor() {
|
||||
if (materialYou) return
|
||||
backgroundTintList = ColorStateList.valueOf(ThemeStore.accentColor(App.getContext()))
|
||||
}
|
||||
|
||||
fun MaterialButton.accentOutlineColor() {
|
||||
if (materialYou) return
|
||||
val color = ThemeStore.accentColor(context)
|
||||
val colorStateList = ColorStateList.valueOf(color)
|
||||
iconTint = colorStateList
|
||||
|
@ -116,6 +126,7 @@ fun SeekBar.applyColor(@ColorInt color: Int) {
|
|||
}
|
||||
|
||||
fun ExtendedFloatingActionButton.accentColor() {
|
||||
if (materialYou) return
|
||||
val color = ThemeStore.accentColor(context)
|
||||
val textColor = MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(color))
|
||||
val colorStateList = ColorStateList.valueOf(color)
|
||||
|
@ -126,6 +137,7 @@ fun ExtendedFloatingActionButton.accentColor() {
|
|||
}
|
||||
|
||||
fun FloatingActionButton.accentColor() {
|
||||
if (materialYou) return
|
||||
val color = ThemeStore.accentColor(context)
|
||||
val textColor = MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(color))
|
||||
backgroundTintList = ColorStateList.valueOf(color)
|
||||
|
@ -145,15 +157,21 @@ fun MaterialButton.applyColor(color: Int) {
|
|||
iconTint = textColorColorStateList
|
||||
}
|
||||
|
||||
fun MaterialButton.accentColor() = applyColor(ThemeStore.accentColor(context))
|
||||
fun MaterialButton.accentColor() {
|
||||
if (materialYou) return
|
||||
applyColor(ThemeStore.accentColor(context))
|
||||
}
|
||||
|
||||
fun MaterialButton.applyOutlineColor(color: Int) {
|
||||
val textColorColorStateList = ColorStateList.valueOf(color)
|
||||
setTextColor(textColorColorStateList)
|
||||
iconTint = textColorColorStateList
|
||||
val colorStateList = ColorStateList.valueOf(color)
|
||||
iconTint = colorStateList
|
||||
strokeColor = colorStateList
|
||||
setTextColor(colorStateList)
|
||||
rippleColor = colorStateList
|
||||
}
|
||||
|
||||
fun TextInputLayout.accentColor() {
|
||||
if (materialYou) return
|
||||
val accentColor = ThemeStore.accentColor(context)
|
||||
val colorState = ColorStateList.valueOf(accentColor)
|
||||
boxStrokeColor = accentColor
|
||||
|
@ -162,6 +180,7 @@ fun TextInputLayout.accentColor() {
|
|||
}
|
||||
|
||||
fun CircularProgressIndicator.accentColor() {
|
||||
if (materialYou) return
|
||||
val color = ThemeStore.accentColor(context)
|
||||
setIndicatorColor(color)
|
||||
trackColor = ColorUtil.withAlpha(color, 0.2f)
|
||||
|
@ -174,6 +193,21 @@ fun CircularProgressIndicator.applyColor(color: Int) {
|
|||
|
||||
fun AppCompatImageView.accentColor(): Int = ThemeStore.accentColor(context)
|
||||
|
||||
fun TextInputLayout.setTint(background: Boolean = true) {
|
||||
if (materialYou) return
|
||||
val accentColor = ThemeStore.accentColor(context)
|
||||
val colorState = ColorStateList.valueOf(accentColor)
|
||||
|
||||
if (background) {
|
||||
backgroundTintList = colorState
|
||||
defaultHintTextColor = colorState
|
||||
} else {
|
||||
boxStrokeColor = accentColor
|
||||
defaultHintTextColor = colorState
|
||||
isHintAnimationEnabled = true
|
||||
}
|
||||
}
|
||||
|
||||
@CheckResult
|
||||
fun Drawable.tint(@ColorInt color: Int): Drawable {
|
||||
val tintedDrawable = DrawableCompat.wrap(this).mutate()
|
||||
|
|
|
@ -27,6 +27,7 @@ import androidx.core.animation.doOnEnd
|
|||
import androidx.core.animation.doOnStart
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.TintHelper
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.imageview.ShapeableImageView
|
||||
import com.google.android.material.shape.ShapeAppearanceModel
|
||||
|
@ -51,6 +52,7 @@ fun View.hidden() {
|
|||
fun View.showOrHide(show: Boolean) = if (show) show() else hide()
|
||||
|
||||
fun EditText.appHandleColor(): EditText {
|
||||
if (PreferenceUtil.materialYou) return this
|
||||
TintHelper.colorHandles(this, ThemeStore.accentColor(context))
|
||||
return this
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue