MD3 Accent color for Switch

This commit is contained in:
Prathamesh More 2021-10-05 12:06:57 +05:30
parent 531623b9b2
commit b2a1cb1e2e
6 changed files with 34 additions and 10 deletions

View file

@ -22,14 +22,20 @@ import android.graphics.Color;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.palette.graphics.Palette; import androidx.palette.graphics.Palette;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.appthemehelper.util.ColorUtil; import code.name.monkey.appthemehelper.util.ColorUtil;
import code.name.monkey.appthemehelper.util.VersionUtils;
import code.name.monkey.retromusic.R;
public class RetroColorUtil { public class RetroColorUtil {
public static int desaturateColor(int color, float ratio) { public static int desaturateColor(int color, float ratio) {
@ -216,6 +222,14 @@ public class RetroColorUtil {
return color; return color;
} }
public static int getMD3AccentColor(@NotNull Context context) {
if (VersionUtils.hasS()) {
return ContextCompat.getColor(context, R.color.m3_accent_color);
} else {
return ThemeStore.Companion.accentColor(context);
}
}
private static class SwatchComparator implements Comparator<Palette.Swatch> { private static class SwatchComparator implements Comparator<Palette.Swatch> {
private static SwatchComparator sInstance; private static SwatchComparator sInstance;

View file

@ -1,11 +1,13 @@
package code.name.monkey.appthemehelper.common.views package code.name.monkey.retromusic.views
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View
import androidx.appcompat.widget.SwitchCompat import androidx.appcompat.widget.SwitchCompat
import androidx.core.view.isVisible
import code.name.monkey.appthemehelper.ATH import code.name.monkey.appthemehelper.ATH
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroColorUtil
/** /**
* @author Aidan Follestad (afollestad) * @author Aidan Follestad (afollestad)
@ -20,15 +22,23 @@ class ATESwitch : SwitchCompat {
init(context) init(context)
} }
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
) {
init(context) init(context)
} }
private fun init(context: Context) { private fun init(context: Context) {
ATH.setTint(this, ThemeStore.accentColor(context)) if (PreferenceUtil.materialYou) {
ATH.setTint(this, RetroColorUtil.getMD3AccentColor(context))
} else {
ATH.setTint(this, ThemeStore.accentColor(context))
}
} }
override fun isShown(): Boolean { override fun isShown(): Boolean {
return parent != null && visibility == View.VISIBLE return parent != null && isVisible
} }
} }

View file

@ -72,7 +72,7 @@
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintGuide_begin="@dimen/list_pref_guideline_begin" /> app:layout_constraintGuide_begin="@dimen/list_pref_guideline_begin" />
<code.name.monkey.appthemehelper.common.views.ATESwitch <code.name.monkey.retromusic.views.ATESwitch
android:id="@android:id/checkbox" android:id="@android:id/checkbox"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View file

@ -60,7 +60,7 @@
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintGuide_begin="@dimen/list_pref_guideline_begin" /> app:layout_constraintGuide_begin="@dimen/list_pref_guideline_begin" />
<code.name.monkey.appthemehelper.common.views.ATESwitch <code.name.monkey.retromusic.views.ATESwitch
android:id="@android:id/checkbox" android:id="@android:id/checkbox"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View file

@ -1,7 +1,6 @@
package code.name.monkey.appthemehelper.util package code.name.monkey.appthemehelper.util
import android.os.Build import android.os.Build
import androidx.annotation.ChecksSdkIntAtLeast
/** /**
* @author Hemanth S (h4h13). * @author Hemanth S (h4h13).
@ -59,6 +58,7 @@ object VersionUtils {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
} }
@JvmStatic
fun hasS(): Boolean { fun hasS(): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
} }

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<code.name.monkey.appthemehelper.common.views.ATESwitch xmlns:android="http://schemas.android.com/apk/res/android" <code.name.monkey.retromusic.views.ATESwitch xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/checkbox" android:id="@android:id/checkbox"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"