Added ability to extract accent color from wallpaper on 8.1+ devices
This commit is contained in:
parent
09ad243a14
commit
9d1018c03c
16 changed files with 117 additions and 6 deletions
|
@ -20,6 +20,7 @@ import code.name.monkey.appthemehelper.ThemeStore
|
|||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.Constants.PRO_VERSION_PRODUCT_ID
|
||||
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
|
||||
import code.name.monkey.retromusic.helper.WallpaperAccentManager
|
||||
import com.anjlab.android.iab.v3.BillingProcessor
|
||||
import com.anjlab.android.iab.v3.PurchaseInfo
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
|
@ -28,6 +29,7 @@ import org.koin.core.context.startKoin
|
|||
class App : Application() {
|
||||
|
||||
lateinit var billingProcessor: BillingProcessor
|
||||
private val wallpaperAccentManager = WallpaperAccentManager(this)
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
|
@ -44,6 +46,7 @@ class App : Application() {
|
|||
.coloredNavigationBar(true)
|
||||
.commit()
|
||||
}
|
||||
wallpaperAccentManager.init()
|
||||
|
||||
if (VersionUtils.hasNougatMR())
|
||||
DynamicShortcutManager(this).initDynamicShortcuts()
|
||||
|
@ -71,6 +74,7 @@ class App : Application() {
|
|||
override fun onTerminate() {
|
||||
super.onTerminate()
|
||||
billingProcessor.release()
|
||||
wallpaperAccentManager.release()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -159,3 +159,4 @@ const val PLAYBACK_SPEED = "playback_speed"
|
|||
const val PLAYBACK_PITCH = "playback_pitch"
|
||||
const val CUSTOM_FONT = "custom_font"
|
||||
const val APPBAR_MODE = "appbar_mode"
|
||||
const val WALLPAPER_ACCENT = "wallpaper_accent"
|
||||
|
|
|
@ -147,7 +147,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
|
|||
}
|
||||
|
||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
|
||||
if (key == GENERAL_THEME || key == MATERIAL_YOU || key == BLACK_THEME || key == ADAPTIVE_COLOR_APP || key == USER_NAME || key == TOGGLE_FULL_SCREEN || key == TOGGLE_VOLUME || key == ROUND_CORNERS || key == CAROUSEL_EFFECT || key == NOW_PLAYING_SCREEN_ID || key == TOGGLE_GENRE || key == BANNER_IMAGE_PATH || key == PROFILE_IMAGE_PATH || key == CIRCULAR_ALBUM_ART || key == KEEP_SCREEN_ON || key == TOGGLE_SEPARATE_LINE || key == TOGGLE_HOME_BANNER || key == TOGGLE_ADD_CONTROLS || key == ALBUM_COVER_STYLE || key == HOME_ARTIST_GRID_STYLE || key == ALBUM_COVER_TRANSFORM || key == DESATURATED_COLOR || key == EXTRA_SONG_INFO || key == TAB_TEXT_MODE || key == LANGUAGE_NAME || key == LIBRARY_CATEGORIES || key == CUSTOM_FONT|| key == APPBAR_MODE) {
|
||||
if (key == GENERAL_THEME || key == MATERIAL_YOU || key == WALLPAPER_ACCENT || key == BLACK_THEME || key == ADAPTIVE_COLOR_APP || key == USER_NAME || key == TOGGLE_FULL_SCREEN || key == TOGGLE_VOLUME || key == ROUND_CORNERS || key == CAROUSEL_EFFECT || key == NOW_PLAYING_SCREEN_ID || key == TOGGLE_GENRE || key == BANNER_IMAGE_PATH || key == PROFILE_IMAGE_PATH || key == CIRCULAR_ALBUM_ART || key == KEEP_SCREEN_ON || key == TOGGLE_SEPARATE_LINE || key == TOGGLE_HOME_BANNER || key == TOGGLE_ADD_CONTROLS || key == ALBUM_COVER_STYLE || key == HOME_ARTIST_GRID_STYLE || key == ALBUM_COVER_TRANSFORM || key == DESATURATED_COLOR || key == EXTRA_SONG_INFO || key == TAB_TEXT_MODE || key == LANGUAGE_NAME || key == LIBRARY_CATEGORIES || key == CUSTOM_FONT|| key == APPBAR_MODE) {
|
||||
postRecreate()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
*/
|
||||
package code.name.monkey.retromusic.fragments.settings
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.preference.Preference
|
||||
|
@ -37,6 +38,7 @@ import com.google.android.material.color.DynamicColors
|
|||
*/
|
||||
|
||||
class ThemeSettingsFragment : AbsSettingsFragment() {
|
||||
@SuppressLint("CheckResult")
|
||||
override fun invalidateSettings() {
|
||||
val generalTheme: Preference? = findPreference(GENERAL_THEME)
|
||||
generalTheme?.let {
|
||||
|
@ -121,6 +123,11 @@ class ThemeSettingsFragment : AbsSettingsFragment() {
|
|||
restartActivity()
|
||||
true
|
||||
}
|
||||
val wallpaperAccent: ATESwitchPreference? = findPreference(WALLPAPER_ACCENT)
|
||||
wallpaperAccent?.setOnPreferenceChangeListener { _, _ ->
|
||||
restartActivity()
|
||||
true
|
||||
}
|
||||
val customFont: ATESwitchPreference? = findPreference(CUSTOM_FONT)
|
||||
customFont?.setOnPreferenceChangeListener { _, _ ->
|
||||
restartActivity()
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package code.name.monkey.retromusic.helper
|
||||
|
||||
import android.app.WallpaperManager
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import androidx.annotation.RequiresApi
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
|
||||
class WallpaperAccentManager(val context: Context) {
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.O_MR1)
|
||||
private val onColorsChangedListener =
|
||||
WallpaperManager.OnColorsChangedListener { colors, which ->
|
||||
if (which == WallpaperManager.FLAG_SYSTEM && colors != null) {
|
||||
ThemeStore.editTheme(context).wallpaperColor(colors.primaryColor.toArgb()).commit()
|
||||
}
|
||||
}
|
||||
|
||||
fun init() {
|
||||
if (VersionUtils.hasOreoMR1() && PreferenceUtil.wallpaperAccent) {
|
||||
WallpaperManager.getInstance(context).apply {
|
||||
addOnColorsChangedListener(onColorsChangedListener, Handler(Looper.getMainLooper()))
|
||||
ThemeStore.editTheme(context).wallpaperColor(
|
||||
getWallpaperColors(WallpaperManager.FLAG_SYSTEM)?.primaryColor?.toArgb() ?: 0
|
||||
).commit()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun release() {
|
||||
if (VersionUtils.hasOreoMR1()) {
|
||||
WallpaperManager.getInstance(context)
|
||||
.removeOnColorsChangedListener(onColorsChangedListener)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -696,6 +696,9 @@ object PreferenceUtil {
|
|||
} else {
|
||||
TopAppBarLayout.AppBarMode.SIMPLE
|
||||
}
|
||||
|
||||
val wallpaperAccent
|
||||
get() = sharedPreferences.getBoolean(WALLPAPER_ACCENT, VersionUtils.hasOreoMR1() && !VersionUtils.hasS())
|
||||
}
|
||||
enum class LyricsType {
|
||||
REPLACE_LYRICS, OVER_LYRICS
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue