diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt index 36236f32..351ba9d3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/base/AbsSlidingMusicPanelActivity.kt @@ -19,11 +19,11 @@ import code.name.monkey.retromusic.ui.fragments.player.adaptive.AdaptiveFragment import code.name.monkey.retromusic.ui.fragments.player.blur.BlurPlayerFragment import code.name.monkey.retromusic.ui.fragments.player.card.CardFragment import code.name.monkey.retromusic.ui.fragments.player.cardblur.CardBlurFragment -import code.name.monkey.retromusic.ui.fragments.player.classic.ClassicPlayerFragment import code.name.monkey.retromusic.ui.fragments.player.color.ColorFragment import code.name.monkey.retromusic.ui.fragments.player.fit.FitFragment import code.name.monkey.retromusic.ui.fragments.player.flat.FlatPlayerFragment import code.name.monkey.retromusic.ui.fragments.player.full.FullPlayerFragment +import code.name.monkey.retromusic.ui.fragments.player.tiny.TinyPlayerFragment import code.name.monkey.retromusic.ui.fragments.player.material.MaterialFragment import code.name.monkey.retromusic.ui.fragments.player.normal.PlayerFragment import code.name.monkey.retromusic.ui.fragments.player.plain.PlainPlayerFragment @@ -192,7 +192,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), Sliding NowPlayingScreen.SIMPLE -> SimplePlayerFragment() NowPlayingScreen.MATERIAL -> MaterialFragment() NowPlayingScreen.COLOR -> ColorFragment() - //NowPlayingScreen.CLASSIC -> ClassicPlayerFragment() + NowPlayingScreen.TINY -> TinyPlayerFragment() else -> PlayerFragment() } // must implement AbsPlayerFragment supportFragmentManager.beginTransaction().replace(R.id.playerFragmentContainer, fragment).commit() diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/NowPlayingScreen.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/NowPlayingScreen.kt index a84eea0c..f11decc5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/NowPlayingScreen.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/NowPlayingScreen.kt @@ -20,7 +20,7 @@ enum class NowPlayingScreen constructor(@param:StringRes @field:StringRes MATERIAL(R.string.material, R.drawable.np_material, 11), NORMAL(R.string.normal, R.drawable.np_normal, 0), PLAIN(R.string.plain, R.drawable.np_plain, 3), - //CLASSIC(R.string.classic, R.drawable.np_normal, 7), + TINY(R.string.tiny, R.drawable.np_tiny, 7), SIMPLE(R.string.simple, R.drawable.np_simple, 8) } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt index 49789339..8583fc5d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/home/BannerHomeFragment.kt @@ -171,9 +171,14 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba } private fun setupToolbar() { - toolbar.navigationIcon = TintHelper.createTintedDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_search_white_24dp), ThemeStore.textColorSecondary(context!!)) mainActivity.title = null - toolbar.setBackgroundColor(Color.TRANSPARENT) + toolbar.apply { + navigationIcon = TintHelper.createTintedDrawable(ContextCompat.getDrawable(context!!, R.drawable.ic_search_white_24dp), ThemeStore.textColorSecondary(context!!)) + setBackgroundColor(Color.TRANSPARENT) + setNavigationOnClickListener { + NavigationUtil.goToSearch(activity) + } + } } override fun handleBackPress(): Boolean { diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/tiny/TinyPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/tiny/TinyPlaybackControlsFragment.kt new file mode 100644 index 00000000..d87a0974 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/tiny/TinyPlaybackControlsFragment.kt @@ -0,0 +1,97 @@ +package code.name.monkey.retromusic.ui.fragments.player.tiny + +import android.graphics.PorterDuff +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +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.helper.MusicPlayerRemote +import code.name.monkey.retromusic.service.MusicService +import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment +import kotlinx.android.synthetic.main.fragment_tiny_controls_fragment.* + +class TinyPlaybackControlsFragment : AbsPlayerControlsFragment() { + + override fun show() { + + } + + override fun hide() { + + } + + override fun setUpProgressSlider() { + + } + + override fun setDark(color: Int) { + if (ColorUtil.isColorLight(color)) { + lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(getActivity(), true); + lastDisabledPlaybackControlsColor = MaterialValueHelper.getSecondaryDisabledTextColor(getActivity(), true); + } else { + lastPlaybackControlsColor = MaterialValueHelper.getPrimaryTextColor(getActivity(), false); + lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(getActivity(), false); + } + + updateRepeatState(); + updateShuffleState(); + } + + override fun onUpdateProgressViews(progress: Int, total: Int) { + + } + + private var lastPlaybackControlsColor: Int = 0 + private var lastDisabledPlaybackControlsColor: Int = 0 + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_tiny_controls_fragment, container, false); + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setUpMusicControllers() + } + + private fun setUpMusicControllers() { + setUpRepeatButton() + setUpShuffleButton() + setUpProgressSlider() + } + + private fun setUpShuffleButton() { + playerShuffleButton.setOnClickListener { MusicPlayerRemote.toggleShuffleMode() } + } + + private fun setUpRepeatButton() { + playerRepeatButton.setOnClickListener { MusicPlayerRemote.cycleRepeatMode() } + } + + override fun updateShuffleState() { + when (MusicPlayerRemote.shuffleMode) { + MusicService.SHUFFLE_MODE_SHUFFLE -> playerShuffleButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + else -> playerShuffleButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + } + + override fun updateRepeatState() { + when (MusicPlayerRemote.repeatMode) { + MusicService.REPEAT_MODE_NONE -> { + playerRepeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) + playerRepeatButton.setColorFilter(lastDisabledPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + MusicService.REPEAT_MODE_ALL -> { + playerRepeatButton.setImageResource(R.drawable.ic_repeat_white_24dp) + playerRepeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + MusicService.REPEAT_MODE_THIS -> { + playerRepeatButton.setImageResource(R.drawable.ic_repeat_one_white_24dp) + playerRepeatButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/tiny/TinyPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/tiny/TinyPlayerFragment.kt new file mode 100644 index 00000000..ee9a4aa3 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/tiny/TinyPlayerFragment.kt @@ -0,0 +1,158 @@ +package code.name.monkey.retromusic.ui.fragments.player.tiny + +import android.animation.AnimatorSet +import android.animation.ObjectAnimator +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.animation.LinearInterpolator +import androidx.appcompat.widget.Toolbar +import code.name.monkey.appthemehelper.ThemeStore +import code.name.monkey.appthemehelper.util.ColorUtil +import code.name.monkey.appthemehelper.util.MaterialValueHelper +import code.name.monkey.appthemehelper.util.TintHelper +import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper +import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.model.Song +import code.name.monkey.retromusic.ui.fragments.MiniPlayerFragment +import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerFragment +import code.name.monkey.retromusic.ui.fragments.player.PlayerAlbumCoverFragment +import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.PreferenceUtil +import kotlinx.android.synthetic.main.fragment_tiny_player.* + +class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback { + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressBar.max = total + + val animator = ObjectAnimator.ofInt(progressBar, "progress", progress) + + val animatorSet = AnimatorSet() + animatorSet.playSequentially(animator) + + animatorSet.duration = 1500 + animatorSet.interpolator = LinearInterpolator() + animatorSet.start() + + playerSongTotalTime.text = String.format("%s/%s", MusicUtil.getReadableDurationString(total.toLong()), + MusicUtil.getReadableDurationString(progress.toLong())) + } + + + override fun toolbarGet(): Toolbar { + return playerToolbar + } + + override fun onShow() { + + } + + override fun onHide() { + } + + override fun onBackPressed(): Boolean { + return false + } + + override fun toolbarIconColor(): Int { + return MaterialValueHelper.getSecondaryTextColor(context, ColorUtil.isColorLight(lastColor)) + } + + private var lastColor: Int = 0 + override val paletteColor: Int + get() = lastColor + + override fun onColorChanged(color: Int) { + val lastColor = if (PreferenceUtil.getInstance().adaptiveColor) { + color + } else { + ThemeStore.accentColor(context!!) + } + callbacks?.onPaletteColorChanged() + tinyPlaybackControlsFragment.setDark(lastColor) + + TintHelper.setTintAuto(progressBar, lastColor, false) + + val iconColor = MaterialValueHelper.getSecondaryTextColor(context, ColorUtil.isColorLight(lastColor)) + ToolbarContentTintHelper.colorizeToolbar(playerToolbar, iconColor, activity) + } + + override fun onFavoriteToggled() { + toggleFavorite(MusicPlayerRemote.currentSong) + } + + private lateinit var tinyPlaybackControlsFragment: TinyPlaybackControlsFragment + private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) + } + + override fun onResume() { + super.onResume() + progressViewUpdateHelper.start() + } + + override fun onPause() { + super.onPause() + progressViewUpdateHelper.stop() + } + + private fun updateSong() { + val song = MusicPlayerRemote.currentSong + songTitle.text = song.title + songText.text = String.format("%s \nby -%s", song.albumName, song.artistName) + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_tiny_player, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + progressBar.setOnClickListener(PlayPauseButtonOnClickHandler()) + progressBar.setOnTouchListener(MiniPlayerFragment.FlingPlayBackController(activity!!)) + + setUpPlayerToolbar() + setUpSubFragments() + } + + private fun setUpSubFragments() { + tinyPlaybackControlsFragment = childFragmentManager.findFragmentById(R.id.playbackControlsFragment) as TinyPlaybackControlsFragment + val playerAlbumCoverFragment = childFragmentManager.findFragmentById(R.id.playerAlbumCoverFragment) as PlayerAlbumCoverFragment + playerAlbumCoverFragment.setCallbacks(this) + + } + + private fun setUpPlayerToolbar() { + playerToolbar.apply { + inflateMenu(R.menu.menu_player) + setNavigationOnClickListener { activity!!.onBackPressed() } + setOnMenuItemClickListener(this@TinyPlayerFragment) + } + } + + override fun toggleFavorite(song: Song) { + super.toggleFavorite(song) + if (song.id == MusicPlayerRemote.currentSong.id) { + updateIsFavorite() + } + } + + override fun onServiceConnected() { + super.onServiceConnected() + updateSong() + } + + override fun onPlayingMetaChanged() { + super.onPlayingMetaChanged() + updateSong() + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxxhdpi/np_tiny.webp b/app/src/main/res/drawable-xxxhdpi/np_tiny.webp index 0e00061c..3cc976cd 100644 Binary files a/app/src/main/res/drawable-xxxhdpi/np_tiny.webp and b/app/src/main/res/drawable-xxxhdpi/np_tiny.webp differ diff --git a/app/src/main/res/drawable/progress_drawable_vertical.xml b/app/src/main/res/drawable/progress_drawable_vertical.xml index 07660805..7416c591 100644 --- a/app/src/main/res/drawable/progress_drawable_vertical.xml +++ b/app/src/main/res/drawable/progress_drawable_vertical.xml @@ -2,7 +2,7 @@ - + @@ -10,7 +10,8 @@ android:clipOrientation="vertical" android:gravity="bottom"> - diff --git a/app/src/main/res/layout/fragment_hmm_controls_fragment.xml b/app/src/main/res/layout/fragment_tiny_controls_fragment.xml similarity index 91% rename from app/src/main/res/layout/fragment_hmm_controls_fragment.xml rename to app/src/main/res/layout/fragment_tiny_controls_fragment.xml index 9127e5fb..a31f7ee8 100644 --- a/app/src/main/res/layout/fragment_hmm_controls_fragment.xml +++ b/app/src/main/res/layout/fragment_tiny_controls_fragment.xml @@ -8,7 +8,7 @@ android:orientation="vertical"> - + + - - - - + android:background="#90000000" /> @@ -90,11 +87,11 @@ android:orientation="vertical"> + tools:layout="@layout/fragment_tiny_controls_fragment" /> @@ -116,13 +113,13 @@ android:orientation="horizontal">