From fd22134a2359ed8bdbfeb7d3560c56fc2439c080 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Wed, 6 May 2020 01:25:15 +0530 Subject: [PATCH 1/3] Added proper coloring --- .../adapter/album/AlbumCoverPagerAdapter.kt | 8 +- .../player/PlayerAlbumCoverFragment.kt | 7 +- .../player/adaptive/AdaptiveFragment.kt | 7 +- .../player/blur/BlurPlayerFragment.kt | 6 +- .../fragments/player/card/CardFragment.kt | 7 +- .../player/cardblur/CardBlurFragment.kt | 6 +- .../player/circle/CirclePlayerFragment.kt | 3 +- .../player/classic/ClassicPlayerFragment.kt | 9 +- .../fragments/player/color/ColorFragment.kt | 89 +++---------------- .../fragments/player/fit/FitFragment.kt | 7 +- .../player/flat/FlatPlayerFragment.kt | 11 +-- .../player/full/FullPlayerFragment.kt | 6 +- .../player/material/MaterialFragment.kt | 7 +- .../fragments/player/normal/PlayerFragment.kt | 9 +- .../player/peak/PeakPlayerFragment.kt | 6 +- .../player/plain/PlainPlayerFragment.kt | 7 +- .../player/simple/SimplePlayerFragment.kt | 7 +- .../player/tiny/TinyPlayerFragment.kt | 5 +- .../res/layout-land/fragment_color_player.xml | 20 +---- .../main/res/layout/fragment_color_player.xml | 23 ++--- 20 files changed, 90 insertions(+), 160 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index 1b77d3ec..5e4c7253 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -63,7 +63,7 @@ class AlbumCoverPagerAdapter( lateinit var albumCover: ImageView private var isColorReady: Boolean = false - private var color: Int = 0 + private lateinit var color: MediaNotificationProcessor private lateinit var song: Song private var colorReceiver: ColorReceiver? = null private var request: Int = 0 @@ -123,12 +123,12 @@ class AlbumCoverPagerAdapter( .generatePalette(requireContext()).build() .into(object : RetroMusicColoredTarget(albumCover) { override fun onColorReady(colors: MediaNotificationProcessor) { - setColor(colors.backgroundColor) + setColor(colors) } }) } - private fun setColor(color: Int) { + private fun setColor(color: MediaNotificationProcessor) { this.color = color isColorReady = true if (colorReceiver != null) { @@ -147,7 +147,7 @@ class AlbumCoverPagerAdapter( } interface ColorReceiver { - fun onColorReady(color: Int, request: Int) + fun onColorReady(color: MediaNotificationProcessor, request: Int) } companion object { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt index 9801c9b6..b612a7a9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt @@ -14,13 +14,14 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.transform.CarousalPagerTransformer import code.name.monkey.retromusic.transform.ParallaxPagerTransformer import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_player_album_cover.* class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChangeListener { private var callbacks: Callbacks? = null private var currentPosition: Int = 0 private val colorReceiver = object : AlbumCoverFragment.ColorReceiver { - override fun onColorReady(color: Int, request: Int) { + override fun onColorReady(color: MediaNotificationProcessor, request: Int) { if (currentPosition == request) { notifyColorChange(color) } @@ -103,7 +104,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan override fun onPageScrollStateChanged(state: Int) { } - private fun notifyColorChange(color: Int) { + private fun notifyColorChange(color: MediaNotificationProcessor) { callbacks?.onColorChanged(color) } @@ -117,7 +118,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan interface Callbacks { - fun onColorChanged(color: Int) + fun onColorChanged(color: MediaNotificationProcessor) fun onFavoriteToggled() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt index c8f4b13d..8a0d96d7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt @@ -19,6 +19,7 @@ import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.lyrics.AbsSynchronizedLyrics import code.name.monkey.retromusic.model.lyrics.Lyrics +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_adaptive_player.* class AdaptiveFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback { @@ -194,9 +195,9 @@ class AdaptiveFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Call toggleFavorite(MusicPlayerRemote.currentSong) } - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar( playerToolbar, diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt index 2a5fc0ed..61da453f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt @@ -65,9 +65,9 @@ class BlurPlayerFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPrefer toggleFavorite(MusicPlayerRemote.currentSong) } - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt index f4f3b2c7..f44721b3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt @@ -13,6 +13,7 @@ import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_card_player.* class CardFragment : AbsPlayerFragment() { @@ -43,9 +44,9 @@ class CardFragment : AbsPlayerFragment() { return Color.WHITE } - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks!!.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt index 719f0ffa..40cc2da9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt @@ -50,9 +50,9 @@ class CardBlurFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPreferen return Color.WHITE } - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks!!.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt index 0b8230bc..f433c7d2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt @@ -39,6 +39,7 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.views.SeekArc import code.name.monkey.retromusic.views.SeekArc.OnSeekArcChangeListener import code.name.monkey.retromusic.volume.AudioVolumeObserver @@ -161,7 +162,7 @@ class CirclePlayerFragment : AbsPlayerFragment(), Callback, OnAudioVolumeChanged override val paletteColor: Int get() = Color.BLACK - override fun onColorChanged(color: Int) { + override fun onColorChanged(color: MediaNotificationProcessor) { } override fun onFavoriteToggled() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt index e621ba56..d1e50d3d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt @@ -30,6 +30,7 @@ import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.card.MaterialCardView import kotlinx.android.synthetic.main.fragment_clasic_player.* @@ -175,7 +176,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener, MusicPlayerRemote.position, R.layout.item_queue ) - recyclerView .apply { + recyclerView.apply { adapter = queueAdapter layoutManager = LinearLayoutManager(requireContext()) } @@ -225,8 +226,8 @@ class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener, override val paletteColor: Int get() = lastColor - override fun onColorChanged(color: Int) { - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + lastColor = color.backgroundColor ToolbarContentTintHelper.colorizeToolbar( playerToolbar, Color.WHITE, @@ -246,7 +247,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener, } val colorFinal = if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) { - color + color.backgroundColor } else { ThemeStore.accentColor(requireContext()) }.ripAlpha() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt index 8464602a..b8fe2caa 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt @@ -1,7 +1,6 @@ package code.name.monkey.retromusic.fragments.player.color import android.animation.ValueAnimator -import android.graphics.drawable.Drawable import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -9,19 +8,13 @@ import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil -import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment -import code.name.monkey.retromusic.glide.RetroMusicColoredTarget -import code.name.monkey.retromusic.glide.SongGlideRequest.Builder -import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper +import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor -import com.bumptech.glide.Glide -import com.bumptech.glide.request.animation.GlideAnimation import kotlinx.android.synthetic.main.fragment_color_player.* class ColorFragment : AbsPlayerFragment() { @@ -38,8 +31,16 @@ class ColorFragment : AbsPlayerFragment() { override val paletteColor: Int get() = backgroundColor - override fun onColorChanged(color: Int) { + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color) + lastColor = color.backgroundColor + callbacks?.onPaletteColorChanged() + ToolbarContentTintHelper.colorizeToolbar( + playerToolbar, + ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal), + requireActivity() + ) } override fun onFavoriteToggled() { @@ -90,9 +91,9 @@ class ColorFragment : AbsPlayerFragment() { super.onViewCreated(view, savedInstanceState) setUpSubFragments() setUpPlayerToolbar() - playerImage.setOnClickListener { - NavigationUtil.goToLyrics(requireActivity()) - } + val playerAlbumCoverFragment = + childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + playerAlbumCoverFragment.setCallbacks(this) } private fun setUpSubFragments() { @@ -113,70 +114,6 @@ class ColorFragment : AbsPlayerFragment() { } } - override fun onPlayingMetaChanged() { - super.onPlayingMetaChanged() - updateSong() - } - - override fun onServiceConnected() { - super.onServiceConnected() - updateSong() - } - - private fun updateSong() { - Builder.from(Glide.with(requireActivity()), MusicPlayerRemote.currentSong) - .checkIgnoreMediaStore(requireContext()) - .generatePalette(requireContext()) - .build() - .into(object : RetroMusicColoredTarget(playerImage) { - override fun onColorReady(colors: MediaNotificationProcessor) { - - } - - override fun onResourceReady( - resource: BitmapPaletteWrapper?, - glideAnimation: GlideAnimation? - ) { - super.onResourceReady(resource, glideAnimation) - resource?.let { - - - val colors = - MediaNotificationProcessor(requireContext(), resource.bitmap) - - - /* val palette = resource.palette - val swatch = RetroColorUtil.getSwatch(palette) - - val textColor = RetroColorUtil.getTextColor(palette) - val backgroundColor = getSuitableColorFor( - palette, - ATHUtil.resolveColor(requireContext(), R.attr.colorSurface), - Color.BLACK - ) - if (ATHUtil.isWindowBackgroundDark(requireContext())) { - ColorUtil.desaturateColor(backgroundColor, 0.5f) - } - */ - setColors(colors) - } - - } - - override fun onLoadFailed(e: Exception?, errorDrawable: Drawable?) { - super.onLoadFailed(e, errorDrawable) - val backgroundColor = defaultFooterColor - val textColor = - if (ColorUtil.isColorLight(defaultFooterColor)) MaterialValueHelper.getPrimaryTextColor( - requireContext(), - true - ) - else MaterialValueHelper.getPrimaryTextColor(requireContext(), false) - //setColors(backgroundColor, textColor) - } - }) - } - private fun setColors(colors: MediaNotificationProcessor) { this.lastColor = colors.backgroundColor this.backgroundColor = colors.backgroundColor diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt index e961ce6e..97b367aa 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt @@ -12,6 +12,7 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_fit.* class FitFragment : AbsPlayerFragment() { @@ -42,9 +43,9 @@ class FitFragment : AbsPlayerFragment() { return ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal) } - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar( playerToolbar, diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt index 1e3a0ffb..ae838c8e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt @@ -19,6 +19,7 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.views.DrawableGradient import kotlinx.android.synthetic.main.fragment_flat_player.* @@ -103,18 +104,18 @@ class FlatPlayerFragment : AbsPlayerFragment() { ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal) } - override fun onColorChanged(color: Int) { - lastColor = color - flatPlaybackControlsFragment.setDark(color) + override fun onColorChanged(color: MediaNotificationProcessor) { + lastColor = color.backgroundColor + flatPlaybackControlsFragment.setDark(color.backgroundColor) callbacks?.onPaletteColorChanged() - val isLight = ColorUtil.isColorLight(color) + val isLight = ColorUtil.isColorLight(color.backgroundColor) val iconColor = if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) MaterialValueHelper.getPrimaryTextColor(requireContext(), isLight) else ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal) ToolbarContentTintHelper.colorizeToolbar(playerToolbar, iconColor, requireActivity()) if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) { - colorize(color) + colorize(color.backgroundColor) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt index 7d34dfbd..50ddade6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt @@ -197,9 +197,9 @@ class FullPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca return Color.WHITE } - override fun onColorChanged(color: Int) { - lastColor = color - fullPlaybackControlsFragment.setDark(color) + override fun onColorChanged(color: MediaNotificationProcessor) { + lastColor = color.backgroundColor + fullPlaybackControlsFragment.setDark(color.backgroundColor) callbacks?.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt index 3b40917f..9e81ce69 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt @@ -13,6 +13,7 @@ import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_material.* /** @@ -48,9 +49,9 @@ class MaterialFragment : AbsPlayerFragment() { return ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal) } - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar( diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt index 611f76d1..7c618122 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt @@ -17,6 +17,7 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.views.DrawableGradient import kotlinx.android.synthetic.main.fragment_player.* @@ -73,9 +74,9 @@ class PlayerFragment : AbsPlayerFragment() { return ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal) } - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar( @@ -85,7 +86,7 @@ class PlayerFragment : AbsPlayerFragment() { ) if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) { - colorize(color) + colorize(color.backgroundColor) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt index 9a6e7221..696c552b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt @@ -100,9 +100,9 @@ class PeakPlayerFragment : AbsPlayerFragment() { override val paletteColor: Int get() = lastColor - override fun onColorChanged(color: Int) { - playbackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + playbackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt index d609f7d6..c268d95c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt @@ -12,6 +12,7 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_plain_player.* class PlainPlayerFragment : AbsPlayerFragment() { @@ -93,9 +94,9 @@ class PlainPlayerFragment : AbsPlayerFragment() { return ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal) } - override fun onColorChanged(color: Int) { - plainPlaybackControlsFragment.setDark(color) - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + plainPlaybackControlsFragment.setDark(color.backgroundColor) + lastColor = color.backgroundColor callbacks!!.onPaletteColorChanged() ToolbarContentTintHelper.colorizeToolbar( playerToolbar, diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt index d31a8206..3bb0a55f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt @@ -12,6 +12,7 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_simple_player.* /** @@ -68,10 +69,10 @@ class SimplePlayerFragment : AbsPlayerFragment() { return ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal) } - override fun onColorChanged(color: Int) { - lastColor = color + override fun onColorChanged(color: MediaNotificationProcessor) { + lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() - simplePlaybackControlsFragment.setDark(color) + simplePlaybackControlsFragment.setDark(color.backgroundColor) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt index 4b2a26d6..1f25883d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt @@ -25,6 +25,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_tiny_player.* class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback { @@ -71,10 +72,10 @@ class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca private var textColorPrimary = 0 private var textColorPrimaryDisabled = 0 - override fun onColorChanged(color: Int) { + override fun onColorChanged(color: MediaNotificationProcessor) { val colorFinal = if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) { - color + color.backgroundColor } else { ThemeStore.accentColor(requireContext()) } diff --git a/app/src/main/res/layout-land/fragment_color_player.xml b/app/src/main/res/layout-land/fragment_color_player.xml index ba453b82..5e5276bd 100644 --- a/app/src/main/res/layout-land/fragment_color_player.xml +++ b/app/src/main/res/layout-land/fragment_color_player.xml @@ -36,24 +36,12 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - + tools:layout="@layout/fragment_album_cover" /> - + android:layout_weight="0"> - - - - + tools:layout="@layout/fragment_album_cover" /> + Date: Wed, 6 May 2020 02:11:07 +0530 Subject: [PATCH 2/3] Added icons for material design and Updated the Album style for Now playing themes --- .../activities/DriveModeActivity.kt | 3 +- .../base/AbsSlidingMusicPanelActivity.kt | 2 +- .../adapter/album/AlbumCoverPagerAdapter.kt | 36 +++++++++++++++--- .../retromusic/dialogs/AddToPlaylistDialog.kt | 37 ++++--------------- .../dialogs/CreatePlaylistDialog.kt | 8 +--- .../retromusic/fragments/NowPlayingScreen.kt | 2 +- .../fragments/player/color/ColorFragment.kt | 11 +++--- .../material/MaterialControlsFragment.kt | 10 ++--- .../retromusic/helper/menu/SongMenuHelper.kt | 18 ++------- .../retromusic/helper/menu/SongsMenuHelper.kt | 13 +------ .../drawable/ic_pause_sharp_white_64dp.xml | 24 ++++++++++++ .../ic_play_arrow_sharp_white_64dp.xml | 24 ++++++++++++ .../ic_repeat_one_sharp_white_24dp.xml | 11 ++++++ .../drawable/ic_repeat_sharp_white_24dp.xml | 11 ++++++ .../drawable/ic_shuffle_sharp_white_24dp.xml | 11 ++++++ .../ic_skip_next_sharp_white_24dp.xml | 11 ++++++ .../ic_skip_previous_sharp_white_24dp.xml | 11 ++++++ .../fragment_material_playback_controls.xml | 8 ++-- 18 files changed, 165 insertions(+), 86 deletions(-) create mode 100644 app/src/main/res/drawable/ic_pause_sharp_white_64dp.xml create mode 100644 app/src/main/res/drawable/ic_play_arrow_sharp_white_64dp.xml create mode 100644 app/src/main/res/drawable/ic_repeat_one_sharp_white_24dp.xml create mode 100644 app/src/main/res/drawable/ic_repeat_sharp_white_24dp.xml create mode 100644 app/src/main/res/drawable/ic_shuffle_sharp_white_24dp.xml create mode 100644 app/src/main/res/drawable/ic_skip_next_sharp_white_24dp.xml create mode 100644 app/src/main/res/drawable/ic_skip_previous_sharp_white_24dp.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt index 633bf0fd..3602d86f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/DriveModeActivity.kt @@ -34,6 +34,7 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.activity_drive_mode.* import kotlinx.coroutines.CoroutineScope @@ -217,7 +218,7 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback { .build() .transform(BlurTransformation.Builder(this).build()) .into(object : RetroMusicColoredTarget(image) { - override fun onColorReady(color: Int) { + override fun onColorReady(color: MediaNotificationProcessor) { } }) } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 1bec676e..a97c592b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -246,7 +246,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), TINY -> TinyPlayerFragment() PEAK -> PeakPlayerFragment() CIRCLE -> CirclePlayerFragment() - EXAMPLE -> ClassicPlayerFragment() + CLASSIC -> ClassicPlayerFragment() else -> PlayerFragment() } // must implement AbsPlayerFragment supportFragmentManager.beginTransaction().replace(R.id.playerFragmentContainer, fragment) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index 5e4c7253..92124757 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -9,6 +9,7 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.fragments.AlbumCoverStyle +import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.misc.CustomFragmentStatePagerAdapter @@ -94,12 +95,7 @@ class AlbumCoverPagerAdapter( container: ViewGroup?, savedInstanceState: Bundle? ): View? { - val finalLayout = when { - PreferenceUtil.getInstance(requireContext()) - .carouselEffect() -> R.layout.fragment_album_carousel_cover - else -> layout - } - val view = inflater.inflate(finalLayout, container, false) + val view = inflater.inflate(getLayoutWithPlayerTheme(), container, false) albumCover = view.findViewById(R.id.player_image) albumCover.setOnClickListener { NavigationUtil.goToLyrics(requireActivity()) @@ -107,6 +103,34 @@ class AlbumCoverPagerAdapter( return view } + private fun getLayoutWithPlayerTheme(): Int { + return when (PreferenceUtil.getInstance(requireContext()).nowPlayingScreen) { + NowPlayingScreen.CARD, + NowPlayingScreen.FIT, + NowPlayingScreen.TINY, + NowPlayingScreen.CLASSIC, + NowPlayingScreen.FULL -> R.layout.fragment_album_full_cover + else -> { + if (PreferenceUtil.getInstance(requireContext()) + .carouselEffect() + ) { + R.layout.fragment_album_carousel_cover + } else { + when (PreferenceUtil.getInstance(requireContext()).albumCoverStyle) { + AlbumCoverStyle.NORMAL -> R.layout.fragment_album_cover + AlbumCoverStyle.FLAT -> R.layout.fragment_album_flat_cover + AlbumCoverStyle.CIRCLE -> R.layout.fragment_album_circle_cover + AlbumCoverStyle.CARD -> R.layout.fragment_album_card_cover + AlbumCoverStyle.MATERIAL -> R.layout.fragment_album_material_cover + AlbumCoverStyle.FULL -> R.layout.fragment_album_full_cover + AlbumCoverStyle.FULL_CARD -> R.layout.fragment_album_full_card_cover + else -> R.layout.fragment_album_cover + } + } + } + } + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) loadAlbumCover() diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt index c82617b5..2360e3b8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt @@ -20,30 +20,25 @@ import androidx.fragment.app.DialogFragment import code.name.monkey.retromusic.R import code.name.monkey.retromusic.loaders.PlaylistLoader import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.room.playlist.PlaylistDatabaseModel -import code.name.monkey.retromusic.room.playlist.PlaylistEntity +import code.name.monkey.retromusic.util.PlaylistsUtil import code.name.monkey.retromusic.util.PreferenceUtil +import com.afollestad.materialdialogs.LayoutMode import com.afollestad.materialdialogs.MaterialDialog +import com.afollestad.materialdialogs.bottomsheets.BottomSheet import com.afollestad.materialdialogs.list.listItems -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch class AddToPlaylistDialog : DialogFragment() { override fun onCreateDialog( savedInstanceState: Bundle? ): Dialog { - - val names = requireArguments().getParcelableArrayList("names") val playlists = PlaylistLoader.getAllPlaylists(requireContext()) val playlistNames: MutableList = mutableListOf() playlistNames.add(requireContext().resources.getString(R.string.action_new_playlist)) - for (p in names!!) { - playlistNames.add(p.playlistName) + for (p in playlists) { + playlistNames.add(p.name) } - return MaterialDialog(requireContext()).show { title(R.string.add_playlist_title) cornerRadius(PreferenceUtil.getInstance(requireContext()).dialogCorner) @@ -57,18 +52,12 @@ class AddToPlaylistDialog : DialogFragment() { } } else { dialog.dismiss() - /*PlaylistsUtil.addToPlaylist( + PlaylistsUtil.addToPlaylist( requireContext(), songs, playlists[index - 1].id, true - )*/ - - GlobalScope.launch(Dispatchers.IO) { - PlaylistDatabaseModel().also { - it.addSongsToPlaylist(songs, names[index - 1]) - } - } + ) } } } @@ -89,17 +78,5 @@ class AddToPlaylistDialog : DialogFragment() { dialog.arguments = args return dialog } - - fun create( - songs: ArrayList, - names: List - ): AddToPlaylistDialog { - val dialog = AddToPlaylistDialog() - val args = Bundle() - args.putParcelableArrayList("songs", ArrayList(songs)) - args.putParcelableArrayList("names", ArrayList(names)) - dialog.arguments = args - return dialog - } } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/CreatePlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/CreatePlaylistDialog.kt index 650cc688..3dd81153 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/CreatePlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/CreatePlaylistDialog.kt @@ -24,10 +24,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R.layout import code.name.monkey.retromusic.R.string import code.name.monkey.retromusic.extensions.appHandleColor -import code.name.monkey.retromusic.fragments.playlists.PlaylistViewModel import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.room.playlist.PlaylistDatabaseModel -import code.name.monkey.retromusic.room.playlist.PlaylistEntity import code.name.monkey.retromusic.util.PlaylistsUtil import code.name.monkey.retromusic.util.PreferenceUtil import com.afollestad.materialdialogs.LayoutMode @@ -60,14 +57,13 @@ class CreatePlaylistDialog : DialogFragment() { ?: return@positiveButton if (playlistView.text.toString().trim { it <= ' ' }.isNotEmpty()) { - /*val playlistId = PlaylistsUtil.createPlaylist( + val playlistId = PlaylistsUtil.createPlaylist( requireContext(), playlistView.text.toString() ) if (playlistId != -1) { PlaylistsUtil.addToPlaylist(requireContext(), songs, playlistId, true) - }*/ - PlaylistDatabaseModel().savePlaylist(PlaylistEntity(playlistView.text.toString())) + } } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt index 71c86544..72b87f73 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt @@ -26,5 +26,5 @@ enum class NowPlayingScreen constructor( PLAIN(R.string.plain, R.drawable.np_plain, 3), SIMPLE(R.string.simple, R.drawable.np_simple, 8), TINY(R.string.tiny, R.drawable.np_tiny, 7), - EXAMPLE(R.string.tiny, R.drawable.np_tiny, 16), + CLASSIC(R.string.classic, R.drawable.np_tiny, 16), } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt index b8fe2caa..ceee29c2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt @@ -38,13 +38,15 @@ class ColorFragment : AbsPlayerFragment() { ToolbarContentTintHelper.colorizeToolbar( playerToolbar, - ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal), + color.secondaryTextColor, requireActivity() ) + colorGradientBackground?.setBackgroundColor(color.backgroundColor) + playerActivity?.setLightNavigationBar(ColorUtil.isColorLight(color.backgroundColor)) } override fun onFavoriteToggled() { - //toggleFavorite(MusicPlayerRemote.currentSong) + toggleFavorite(MusicPlayerRemote.currentSong) } override fun onShow() { @@ -130,10 +132,7 @@ class ColorFragment : AbsPlayerFragment() { companion object { fun newInstance(): ColorFragment { - val args = Bundle() - val fragment = ColorFragment() - fragment.arguments = args - return fragment + return ColorFragment() } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt index c8229d42..bdbff361 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt @@ -140,9 +140,9 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { private fun updatePlayPauseDrawableState() { if (MusicPlayerRemote.isPlaying) { - playPauseButton.setImageResource(R.drawable.ic_pause_white_64dp) + playPauseButton.setImageResource(R.drawable.ic_pause_sharp_white_64dp) } else { - playPauseButton.setImageResource(R.drawable.ic_play_arrow_white_64dp) + playPauseButton.setImageResource(R.drawable.ic_play_arrow_sharp_white_64dp) } } @@ -189,18 +189,18 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { override fun updateRepeatState() { when (MusicPlayerRemote.repeatMode) { MusicService.REPEAT_MODE_NONE -> { - repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) + repeatButton.setImageResource(R.drawable.ic_repeat_sharp_white_24dp) repeatButton.setColorFilter( lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN ) } MusicService.REPEAT_MODE_ALL -> { - repeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) + repeatButton.setImageResource(R.drawable.ic_repeat_sharp_white_24dp) repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) } MusicService.REPEAT_MODE_THIS -> { - repeatButton.setImageResource(R.drawable.ic_repeat_one_white_24dp) + repeatButton.setImageResource(R.drawable.ic_repeat_one_sharp_white_24dp) repeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt index 409123bd..933ec60e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongMenuHelper.kt @@ -29,17 +29,12 @@ import code.name.monkey.retromusic.dialogs.SongDetailDialog import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.PaletteColorHolder import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.room.playlist.PlaylistDatabaseModel import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.RingtoneManager -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.async -import kotlinx.coroutines.launch object SongMenuHelper { - val MENU_RES = R.menu.menu_item_song + const val MENU_RES = R.menu.menu_item_song fun handleMenuClick(activity: FragmentActivity, song: Song, menuItemId: Int): Boolean { when (menuItemId) { @@ -66,15 +61,8 @@ object SongMenuHelper { return true } R.id.action_add_to_playlist -> { - /* AddToPlaylistDialog.create(song) - .show(activity.supportFragmentManager, "ADD_PLAYLIST")*/ - - GlobalScope.launch(Dispatchers.IO) { - val names = async { PlaylistDatabaseModel().getPlaylistNames() }.await() - println(names.toString()) - AddToPlaylistDialog.create(arrayListOf(song), names) - .show(activity.supportFragmentManager, "ADD_PLAYLIST") - } + AddToPlaylistDialog.create(song) + .show(activity.supportFragmentManager, "ADD_PLAYLIST") return true } R.id.action_play_next -> { diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongsMenuHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongsMenuHelper.kt index 5e68ac42..36d110f5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongsMenuHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/menu/SongsMenuHelper.kt @@ -21,11 +21,6 @@ import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog import code.name.monkey.retromusic.dialogs.DeleteSongsDialog import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.room.playlist.PlaylistDatabaseModel -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.async -import kotlinx.coroutines.launch import java.util.* @@ -45,12 +40,8 @@ object SongsMenuHelper { return true } R.id.action_add_to_playlist -> { - GlobalScope.launch(Dispatchers.IO) { - val names = async { PlaylistDatabaseModel().getPlaylistNames() }.await() - println(names.toString()) - /*AddToPlaylistDialog.create(songs, names.await()) - .show(activity.supportFragmentManager, "ADD_PLAYLIST")*/ - } + AddToPlaylistDialog.create(songs) + .show(activity.supportFragmentManager, "ADD_PLAYLIST") return true } R.id.action_delete_from_device -> { diff --git a/app/src/main/res/drawable/ic_pause_sharp_white_64dp.xml b/app/src/main/res/drawable/ic_pause_sharp_white_64dp.xml new file mode 100644 index 00000000..1cdfb49d --- /dev/null +++ b/app/src/main/res/drawable/ic_pause_sharp_white_64dp.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_play_arrow_sharp_white_64dp.xml b/app/src/main/res/drawable/ic_play_arrow_sharp_white_64dp.xml new file mode 100644 index 00000000..5b03f483 --- /dev/null +++ b/app/src/main/res/drawable/ic_play_arrow_sharp_white_64dp.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_repeat_one_sharp_white_24dp.xml b/app/src/main/res/drawable/ic_repeat_one_sharp_white_24dp.xml new file mode 100644 index 00000000..a0dbdbae --- /dev/null +++ b/app/src/main/res/drawable/ic_repeat_one_sharp_white_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_repeat_sharp_white_24dp.xml b/app/src/main/res/drawable/ic_repeat_sharp_white_24dp.xml new file mode 100644 index 00000000..771cddf5 --- /dev/null +++ b/app/src/main/res/drawable/ic_repeat_sharp_white_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_shuffle_sharp_white_24dp.xml b/app/src/main/res/drawable/ic_shuffle_sharp_white_24dp.xml new file mode 100644 index 00000000..e56b2e36 --- /dev/null +++ b/app/src/main/res/drawable/ic_shuffle_sharp_white_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_skip_next_sharp_white_24dp.xml b/app/src/main/res/drawable/ic_skip_next_sharp_white_24dp.xml new file mode 100644 index 00000000..96722564 --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_next_sharp_white_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_skip_previous_sharp_white_24dp.xml b/app/src/main/res/drawable/ic_skip_previous_sharp_white_24dp.xml new file mode 100644 index 00000000..503c81ad --- /dev/null +++ b/app/src/main/res/drawable/ic_skip_previous_sharp_white_24dp.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_material_playback_controls.xml b/app/src/main/res/layout/fragment_material_playback_controls.xml index 3341d270..abd43167 100644 --- a/app/src/main/res/layout/fragment_material_playback_controls.xml +++ b/app/src/main/res/layout/fragment_material_playback_controls.xml @@ -146,7 +146,7 @@ app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/repeatButton" app:layout_constraintTop_toTopOf="@+id/playPauseButton" - app:srcCompat="@drawable/ic_skip_previous_white_24dp" + app:srcCompat="@drawable/ic_skip_previous_sharp_white_24dp" tools:ignore="MissingPrefix" tools:tint="@color/md_black_1000" /> @@ -160,7 +160,7 @@ app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/previousButton" app:layout_constraintTop_toBottomOf="@+id/songInfo" - app:srcCompat="@drawable/ic_pause_white_64dp" + app:srcCompat="@drawable/ic_pause_sharp_white_64dp" tools:tint="@color/md_black_1000" /> @@ -190,7 +190,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/nextButton" app:layout_constraintTop_toTopOf="@+id/nextButton" - app:srcCompat="@drawable/ic_shuffle_white_24dp" + app:srcCompat="@drawable/ic_shuffle_sharp_white_24dp" tools:ignore="MissingPrefix" tools:tint="@color/md_black_1000" /> From 83cb1353d8ecfe75756929ffaf738fc42fc64d54 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Wed, 6 May 2020 03:23:31 +0530 Subject: [PATCH 3/3] Improving material design --- .../adapter/album/AlbumCoverPagerAdapter.kt | 1 + .../base/AbsPlayerControlsFragment.kt | 6 +- .../player/classic/ClassicPlayerFragment.kt | 5 + .../material/MaterialControlsFragment.kt | 35 +++-- .../player/material/MaterialFragment.kt | 103 +++++++++++++- .../res/layout/fragment_clasic_player.xml | 6 +- app/src/main/res/layout/fragment_material.xml | 129 +++++++++++++----- .../fragment_material_playback_controls.xml | 27 ++-- .../monkey/appthemehelper/util/ColorUtil.kt | 30 +++- 9 files changed, 260 insertions(+), 82 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index 92124757..3efebdc9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -109,6 +109,7 @@ class AlbumCoverPagerAdapter( NowPlayingScreen.FIT, NowPlayingScreen.TINY, NowPlayingScreen.CLASSIC, + NowPlayingScreen.MATERIAL, NowPlayingScreen.FULL -> R.layout.fragment_album_full_cover else -> { if (PreferenceUtil.getInstance(requireContext()) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt index 0ac2d8c8..0290fb42 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt @@ -62,11 +62,9 @@ abstract class AbsPlayerControlsFragment : AbsMusicServiceFragment(), private fun hideVolumeIfAvailable() { if (PreferenceUtil.getInstance(requireContext()).volumeToggle) { - childFragmentManager.beginTransaction() - .replace(R.id.volumeFragmentContainer, VolumeFragment()).commit() + childFragmentManager.beginTransaction().replace(R.id.volumeFragmentContainer, VolumeFragment()).commit() childFragmentManager.executePendingTransactions() - volumeFragment = - childFragmentManager.findFragmentById(R.id.volumeFragmentContainer) as VolumeFragment? + volumeFragment = childFragmentManager.findFragmentById(R.id.volumeFragmentContainer) as VolumeFragment? } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt index d1e50d3d..b3ea9c35 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt @@ -117,6 +117,11 @@ class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener, } } + override fun onDestroyView() { + super.onDestroyView() + getQueuePanel().removeBottomSheetCallback(bottomSheetCallbackList) + } + private fun updateSong() { val song = MusicPlayerRemote.currentSong title.text = song.title diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt index bdbff361..a2ec97f2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import code.name.monkey.appthemehelper.util.ATHUtil -import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.hide @@ -99,24 +98,22 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { } override fun setDark(color: Int) { - val colorBg = ATHUtil.resolveColor(requireContext(), R.attr.colorSurface) - if (ColorUtil.isColorLight(colorBg)) { - lastPlaybackControlsColor = - MaterialValueHelper.getSecondaryTextColor(requireContext(), true) - lastDisabledPlaybackControlsColor = - MaterialValueHelper.getSecondaryDisabledTextColor(requireContext(), true) - } else { + if (ATHUtil.isWindowBackgroundDark(requireContext())) { lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(requireContext(), false) lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(requireContext(), false) + }else{ + lastPlaybackControlsColor = + MaterialValueHelper.getSecondaryTextColor(requireContext(), true) + lastDisabledPlaybackControlsColor = + MaterialValueHelper.getSecondaryDisabledTextColor(requireContext(), true) } - updateRepeatState() updateShuffleState() val colorFinal = if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) { - color + lastPlaybackControlsColor } else { textColorSecondary(requireContext()) }.ripAlpha() @@ -126,12 +123,14 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { volumeFragment?.setTintable(colorFinal) - updatePlayPauseColor(colorFinal) - updatePrevNextColor(colorFinal) + updateRepeatState() + updateShuffleState() + updatePlayPauseColor() + updatePrevNextColor() } - private fun updatePlayPauseColor(color: Int) { - playPauseButton.setColorFilter(color, PorterDuff.Mode.SRC_IN) + private fun updatePlayPauseColor() { + playPauseButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) } private fun setUpPlayPauseFab() { @@ -155,14 +154,14 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { } private fun setUpPrevNext() { - updatePrevNextColor(textColorSecondary(requireContext())) + updatePrevNextColor() nextButton.setOnClickListener { MusicPlayerRemote.playNextSong() } previousButton.setOnClickListener { MusicPlayerRemote.back() } } - private fun updatePrevNextColor(color: Int) { - nextButton.setColorFilter(color, PorterDuff.Mode.SRC_IN) - previousButton.setColorFilter(color, PorterDuff.Mode.SRC_IN) + private fun updatePrevNextColor() { + nextButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + previousButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) } private fun setUpShuffleButton() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt index 9e81ce69..25cc8a5d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt @@ -4,22 +4,57 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.FrameLayout +import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar +import androidx.core.view.ViewCompat +import androidx.recyclerview.widget.LinearLayoutManager import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper +import code.name.monkey.retromusic.CustomBottomSheetBehavior import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity +import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.color.MediaNotificationProcessor +import com.google.android.material.bottomsheet.BottomSheetBehavior import kotlinx.android.synthetic.main.fragment_material.* +import kotlinx.android.synthetic.main.status_bar.* /** * @author Hemanth S (h4h13). */ -class MaterialFragment : AbsPlayerFragment() { +class MaterialFragment : AbsPlayerFragment(), View.OnLayoutChangeListener { + private lateinit var queueAdapter: PlayingQueueAdapter + private val bottomSheetCallbackList = object : BottomSheetBehavior.BottomSheetCallback() { + override fun onSlide(bottomSheet: View, slideOffset: Float) { + (requireActivity() as AbsSlidingMusicPanelActivity).getBottomSheetBehavior() + .setAllowDragging(false) + + sheetContent.setPadding( + sheetContent.paddingLeft, + (slideOffset * status_bar.height).toInt(), + sheetContent.paddingRight, + sheetContent.paddingBottom + ) + + playerControlsContainer.layoutParams.height = playerContainer.width + } + + override fun onStateChanged(bottomSheet: View, newState: Int) { + val activity = requireActivity() as AbsSlidingMusicPanelActivity + if (newState == BottomSheetBehavior.STATE_EXPANDED || newState == BottomSheetBehavior.STATE_DRAGGING) { + activity.getBottomSheetBehavior().setAllowDragging(false) + } else { + activity.getBottomSheetBehavior().setAllowDragging(true) + } + } + } override fun playerToolbar(): Toolbar { return playerToolbar @@ -50,6 +85,9 @@ class MaterialFragment : AbsPlayerFragment() { } override fun onColorChanged(color: MediaNotificationProcessor) { + val darkColor = ColorUtil.darkenColorTheme(color.backgroundColor) + playerContainer?.setBackgroundColor(ColorUtil.darkenColorTheme(color.backgroundColor)) + upComing?.setBackgroundColor(ColorUtil.darkenColorTheme(darkColor)) playbackControlsFragment.setDark(color.backgroundColor) lastColor = color.backgroundColor callbacks?.onPaletteColorChanged() @@ -83,6 +121,40 @@ class MaterialFragment : AbsPlayerFragment() { super.onViewCreated(view, savedInstanceState) setUpSubFragments() setUpPlayerToolbar() + setupPanel() + setUpQueue() + getQueuePanel().addBottomSheetCallback(bottomSheetCallbackList) + + playerQueueSheet.setOnTouchListener { _, _ -> + (requireActivity() as AbsSlidingMusicPanelActivity).getBottomSheetBehavior() + .setAllowDragging(false) + getQueuePanel().setAllowDragging(true) + return@setOnTouchListener false + } + } + + private fun setUpQueue() { + queueAdapter = PlayingQueueAdapter( + requireActivity() as AppCompatActivity, mutableListOf(), + MusicPlayerRemote.position, + R.layout.item_queue + ) + recyclerView.apply { + adapter = queueAdapter + layoutManager = LinearLayoutManager(requireContext()) + } + } + + private fun setupPanel() { + if (!ViewCompat.isLaidOut(playerContainer) || playerContainer.isLayoutRequested) { + playerContainer.addOnLayoutChangeListener(this) + return + } + val height = playerContainer?.height ?: 0 + val width = playerContainer?.width ?: 0 + val finalHeight = height - (playerControlsContainer.height - width) + val panel = getQueuePanel() + panel.peekHeight = finalHeight } private fun setUpSubFragments() { @@ -108,6 +180,7 @@ class MaterialFragment : AbsPlayerFragment() { override fun onServiceConnected() { updateIsFavorite() + queueAdapter.swapDataSet(MusicPlayerRemote.playingQueue) } override fun onPlayingMetaChanged() { @@ -120,4 +193,32 @@ class MaterialFragment : AbsPlayerFragment() { return PlayerFragment() } } + + private fun getQueuePanel(): CustomBottomSheetBehavior { + return CustomBottomSheetBehavior.from(playerQueueSheet) as CustomBottomSheetBehavior + } + + override fun onDestroyView() { + super.onDestroyView() + getQueuePanel().removeBottomSheetCallback(bottomSheetCallbackList) + } + + override fun onLayoutChange( + v: View?, + left: Int, + top: Int, + right: Int, + bottom: Int, + oldLeft: Int, + oldTop: Int, + oldRight: Int, + oldBottom: Int + ) { + val height = playerContainer?.height ?: 0 + val width = playerContainer?.width ?: 0 + val finalHeight = height - width + playerControlsContainer.layoutParams.height = height - width + val panel = getQueuePanel() + panel.peekHeight = finalHeight + } } diff --git a/app/src/main/res/layout/fragment_clasic_player.xml b/app/src/main/res/layout/fragment_clasic_player.xml index 3f5861eb..41ac2947 100644 --- a/app/src/main/res/layout/fragment_clasic_player.xml +++ b/app/src/main/res/layout/fragment_clasic_player.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - + @@ -92,7 +91,6 @@ android:background="?attr/colorSurface" tools:listitem="@layout/item_list" /> - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_material.xml b/app/src/main/res/layout/fragment_material.xml index cbc33a35..f2308953 100644 --- a/app/src/main/res/layout/fragment_material.xml +++ b/app/src/main/res/layout/fragment_material.xml @@ -1,5 +1,5 @@ - - - - - - - - @@ -35,33 +24,101 @@ android:name="code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment" android:layout_width="match_parent" android:layout_height="match_parent" - tools:layout="@layout/fragment_album_cover" /> + tools:layout="@layout/fragment_album_full_cover" /> + + + + + + + + + + - + - - + - + android:background="?attr/colorSurface" + android:orientation="vertical"> - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_material_playback_controls.xml b/app/src/main/res/layout/fragment_material_playback_controls.xml index abd43167..7ff0c6dd 100644 --- a/app/src/main/res/layout/fragment_material_playback_controls.xml +++ b/app/src/main/res/layout/fragment_material_playback_controls.xml @@ -30,9 +30,10 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" app:labelBehavior="gone" + app:layout_constraintBottom_toTopOf="@id/playPauseButton" app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintStart_toEndOf="@id/songCurrentProgress" - app:layout_constraintTop_toTopOf="parent" + app:layout_constraintTop_toBottomOf="@id/songInfo" app:thumbRadius="@dimen/slider_thumb_radius" app:trackHeight="@dimen/slider_track_height" tools:ignore="RtlHardcoded,UnusedAttribute" @@ -61,7 +62,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/progressSlider"> + app:layout_constraintTop_toTopOf="parent"> @@ -155,11 +159,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?attr/roundSelector" - app:layout_constraintBottom_toTopOf="@+id/volumeFragmentContainer" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/nextButton" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/previousButton" - app:layout_constraintTop_toBottomOf="@+id/songInfo" + app:layout_constraintTop_toBottomOf="@+id/progressSlider" app:srcCompat="@drawable/ic_pause_sharp_white_64dp" tools:tint="@color/md_black_1000" /> @@ -194,15 +198,12 @@ tools:ignore="MissingPrefix" tools:tint="@color/md_black_1000" /> - + app:layout_constraintStart_toStartOf="parent" /> + diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt index 57eaf4d6..59b09c2e 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ColorUtil.kt @@ -33,13 +33,19 @@ object ColorUtil { return shiftColor(color, 0.9f) } + @ColorInt + fun darkenColorTheme(@ColorInt color: Int): Int { + return shiftColor(color, 0.8f) + } + @ColorInt fun lightenColor(@ColorInt color: Int): Int { return shiftColor(color, 1.1f) } fun isColorLight(@ColorInt color: Int): Boolean { - val darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255 + val darkness = + 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255 return darkness < 0.4 } @@ -94,8 +100,14 @@ object ColorUtil { } fun isColorSaturated(@ColorInt color: Int): Boolean { - val max = Math.max(0.299 * Color.red(color), Math.max(0.587 * Color.green(color), 0.114 * Color.blue(color))) - val min = Math.min(0.299 * Color.red(color), Math.min(0.587 * Color.green(color), 0.114 * Color.blue(color))) + val max = Math.max( + 0.299 * Color.red(color), + Math.max(0.587 * Color.green(color), 0.114 * Color.blue(color)) + ) + val min = Math.min( + 0.299 * Color.red(color), + Math.min(0.587 * Color.green(color), 0.114 * Color.blue(color)) + ) val diff = Math.abs(max - min) return diff > 20 } @@ -122,12 +134,17 @@ object ColorUtil { } @ColorInt - fun getReadableText(@ColorInt textColor: Int, @ColorInt backgroundColor: Int, difference: Int): Int { + fun getReadableText( + @ColorInt textColor: Int, + @ColorInt backgroundColor: Int, + difference: Int + ): Int { var textColorFinal = textColor val isLight = isColorLight(backgroundColor) var i = 0 while (getDifference(textColorFinal, backgroundColor) < difference && i < 100) { - textColorFinal = getMixedColor(textColorFinal, if (isLight) Color.BLACK else Color.WHITE) + textColorFinal = + getMixedColor(textColorFinal, if (isLight) Color.BLACK else Color.WHITE) i++ } @@ -137,7 +154,8 @@ object ColorUtil { @ColorInt fun getContrastColor(@ColorInt color: Int): Int { // Counting the perceptive luminance - human eye favors green color... - val a = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255 + val a = + 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255 return if (a < 0.5) Color.BLACK else Color.WHITE } }