diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a672afac..97b7faa4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,7 +29,7 @@ plugins { val androidTargetSdkVersion: Int by rootProject.extra val androidMinSdkVersion: Int by rootProject.extra val androidBuildToolsVersion: String by rootProject.extra -val androidCompileSdkVersion: Int by rootProject.extra +val androidCompileSdkVersion: String by rootProject.extra val androidCompileNdkVersion: String by rootProject.extra val androidSourceCompatibility: JavaVersion by rootProject.extra val androidTargetCompatibility: JavaVersion by rootProject.extra @@ -43,7 +43,7 @@ val androidKeyAlias: String? by rootProject val androidKeyPassword: String? by rootProject android { - compileSdk = androidCompileSdkVersion + compileSdkPreview = androidCompileSdkVersion ndkVersion = androidCompileNdkVersion buildToolsVersion = androidBuildToolsVersion diff --git a/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java b/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java index 49fbc7b7..41d95420 100644 --- a/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java +++ b/app/src/main/java/org/lsposed/manager/ui/activity/SettingsActivity.java @@ -298,6 +298,21 @@ public class SettingsActivity extends BaseActivity { prefShowHiddenIcons.setOnPreferenceChangeListener((preference, newValue) -> Settings.Global.putInt(requireActivity().getContentResolver(), "show_hidden_icon_apps_enabled", (boolean) newValue ? 1 : 0)); } + + SwitchPreference prefFollowSystemAccent = findPreference("follow_system_accent"); + if (prefFollowSystemAccent != null && (Build.VERSION.SDK_INT >= 31 || Build.VERSION.SDK_INT == 30 && Build.VERSION.PREVIEW_SDK_INT != 0)) { + if (primary_color != null) { + primary_color.setVisible(!prefFollowSystemAccent.isChecked()); + } + prefFollowSystemAccent.setVisible(true); + prefFollowSystemAccent.setOnPreferenceChangeListener((preference, newValue) -> { + SettingsActivity activity = (SettingsActivity) getActivity(); + if (activity != null) { + activity.restart(); + } + return true; + }); + } } @Override diff --git a/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java b/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java index 85cf2619..84b876a1 100644 --- a/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java +++ b/app/src/main/java/org/lsposed/manager/util/theme/ThemeUtil.java @@ -21,6 +21,7 @@ package org.lsposed.manager.util.theme; import android.content.Context; import android.content.SharedPreferences; +import android.os.Build; import androidx.annotation.ColorRes; import androidx.annotation.StyleRes; @@ -73,6 +74,10 @@ public class ThemeUtil { return preferences.getBoolean("black_dark_theme", false); } + private static boolean isSystemAccent() { + return preferences.getBoolean("follow_system_accent", true); + } + public static String getNightTheme(Context context) { if (isBlackNightTheme() && ResourceUtils.isNightMode(context.getResources().getConfiguration())) @@ -105,6 +110,9 @@ public class ThemeUtil { @StyleRes public static int getColorThemeStyleRes() { + if ((Build.VERSION.SDK_INT >= 31 || Build.VERSION.SDK_INT == 30 && Build.VERSION.PREVIEW_SDK_INT != 0) && isSystemAccent()) { + return R.style.ThemeOverlay_system; + } Integer theme = colorThemeMap.get(getColorTheme()); if (theme == null) { return R.style.ThemeOverlay_color_primary; diff --git a/app/src/main/res/values-night-v31/colors_custom.xml b/app/src/main/res/values-night-v31/colors_custom.xml new file mode 100644 index 00000000..453932bd --- /dev/null +++ b/app/src/main/res/values-night-v31/colors_custom.xml @@ -0,0 +1,24 @@ + + + + + + @android:color/system_accent1_200 + diff --git a/app/src/main/res/values-night/colors_custom.xml b/app/src/main/res/values-night/colors_custom.xml index 4e422a04..25570ddd 100644 --- a/app/src/main/res/values-night/colors_custom.xml +++ b/app/src/main/res/values-night/colors_custom.xml @@ -39,4 +39,5 @@ @color/material_brown_200 @color/material_grey_200 @color/material_blue_grey_200 + @color/material_blue diff --git a/app/src/main/res/values-v31/colors_custom.xml b/app/src/main/res/values-v31/colors_custom.xml new file mode 100644 index 00000000..0c90d821 --- /dev/null +++ b/app/src/main/res/values-v31/colors_custom.xml @@ -0,0 +1,24 @@ + + + + + + @android:color/system_accent1_500 + diff --git a/app/src/main/res/values/colors_custom.xml b/app/src/main/res/values/colors_custom.xml index 5e93ab0a..652dc4fc 100644 --- a/app/src/main/res/values/colors_custom.xml +++ b/app/src/main/res/values/colors_custom.xml @@ -39,4 +39,5 @@ @color/material_brown_500 @color/material_grey_500 @color/material_blue_grey_500 + @color/material_blue diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ff619b5b..aca58efc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -152,6 +152,7 @@ Workaround DNS poisoning in some nations Theme color Color that appears most frequently in the app + System accent color Forced display of the application launcher icon on Android 10+ System diff --git a/app/src/main/res/values/themes_custom.xml b/app/src/main/res/values/themes_custom.xml index 5589fcf3..72587cf1 100644 --- a/app/src/main/res/values/themes_custom.xml +++ b/app/src/main/res/values/themes_custom.xml @@ -98,4 +98,8 @@ + + diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index 0ce249a2..8e045c32 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -31,6 +31,11 @@ + - + diff --git a/build.gradle.kts b/build.gradle.kts index b59b9071..16ccd7b5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,7 +41,7 @@ val verName by extra("v1.3.5") val androidTargetSdkVersion by extra(30) val androidMinSdkVersion by extra(27) val androidBuildToolsVersion by extra("30.0.3") -val androidCompileSdkVersion by extra(30) +val androidCompileSdkVersion by extra("android-S") val androidCompileNdkVersion by extra("22.1.7171670") val androidSourceCompatibility by extra(JavaVersion.VERSION_11) val androidTargetCompatibility by extra(JavaVersion.VERSION_11) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 917879ce..dd26d9d2 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -47,7 +47,7 @@ val apiCode: Int by rootProject.extra val androidTargetSdkVersion: Int by rootProject.extra val androidMinSdkVersion: Int by rootProject.extra val androidBuildToolsVersion: String by rootProject.extra -val androidCompileSdkVersion: Int by rootProject.extra +val androidCompileSdkVersion: String by rootProject.extra val androidCompileNdkVersion: String by rootProject.extra val androidSourceCompatibility: JavaVersion by rootProject.extra val androidTargetCompatibility: JavaVersion by rootProject.extra @@ -69,7 +69,7 @@ dependencies { } android { - compileSdk = androidCompileSdkVersion + compileSdkPreview = androidCompileSdkVersion ndkVersion = androidCompileNdkVersion buildToolsVersion = androidBuildToolsVersion