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 209e8075f..acb67d598 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 @@ -18,11 +18,11 @@ enum class NowPlayingScreen constructor( PEAK(R.string.peak, R.drawable.np_peak, 14), ADAPTIVE(R.string.adaptive, R.drawable.np_adaptive, 10), - CIRCLE(R.string.circle, R.drawable.np_adaptive, 15), BLUR(R.string.blur, R.drawable.np_blur, 4), BLUR_CARD(R.string.blur_card, R.drawable.np_blur_card, 9), CARD(R.string.card, R.drawable.np_card, 6), COLOR(R.string.color, R.drawable.np_color, 5), + CIRCLE(R.string.circle, R.drawable.np_minimalistic_circle, 15), FULL(R.string.full, R.drawable.np_full, 2), MATERIAL(R.string.material, R.drawable.np_material, 11), PLAIN(R.string.plain, R.drawable.np_plain, 3), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt index bfa10fb96..0ab8c3fae 100755 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt @@ -17,122 +17,121 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.volume.AudioVolumeObserver import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener -import kotlinx.android.synthetic.main.fragment_volume.* +import kotlinx.android.synthetic.main.fragment_volume.volumeDown +import kotlinx.android.synthetic.main.fragment_volume.volumeSeekBar +import kotlinx.android.synthetic.main.fragment_volume.volumeUp -class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolumeChangedListener, View.OnClickListener { +class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolumeChangedListener, + View.OnClickListener { - private var audioVolumeObserver: AudioVolumeObserver? = null + private var audioVolumeObserver: AudioVolumeObserver? = null - private val audioManager: AudioManager? - get() = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager + private val audioManager: AudioManager? + get() = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_volume, container, false) - } + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_volume, container, false) + } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - setTintable(ThemeStore.accentColor(requireContext())) - volumeDown.setOnClickListener(this) - volumeUp.setOnClickListener(this) - } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setTintable(ThemeStore.accentColor(requireContext())) + volumeDown.setOnClickListener(this) + volumeUp.setOnClickListener(this) + } - override fun onResume() { - super.onResume() - if (audioVolumeObserver == null) { - audioVolumeObserver = AudioVolumeObserver(requireActivity()) - } - audioVolumeObserver!!.register(AudioManager.STREAM_MUSIC, this) + override fun onResume() { + super.onResume() + if (audioVolumeObserver == null) { + audioVolumeObserver = AudioVolumeObserver(requireActivity()) + } + audioVolumeObserver!!.register(AudioManager.STREAM_MUSIC, this) - val audioManager = audioManager - if (audioManager != null) { - volumeSeekBar.max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) - volumeSeekBar.progress = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) - } - volumeSeekBar.setOnSeekBarChangeListener(this) - } + val audioManager = audioManager + if (audioManager != null) { + volumeSeekBar.max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) + volumeSeekBar.progress = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) + } + volumeSeekBar.setOnSeekBarChangeListener(this) + } - override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) { - if (volumeSeekBar == null) { - return - } + override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) { + if (volumeSeekBar == null) { + return + } - volumeSeekBar.max = maxVolume - volumeSeekBar.progress = currentVolume - volumeDown.setImageResource(if (currentVolume == 0) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) - } + volumeSeekBar.max = maxVolume + volumeSeekBar.progress = currentVolume + volumeDown.setImageResource(if (currentVolume == 0) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) + } - override fun onDestroyView() { - super.onDestroyView() - if (audioVolumeObserver != null) { - audioVolumeObserver!!.unregister() - } - } + override fun onDestroyView() { + super.onDestroyView() + if (audioVolumeObserver != null) { + audioVolumeObserver!!.unregister() + } + } - override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) { - val audioManager = audioManager - audioManager?.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0) - setPauseWhenZeroVolume(i < 1) - volumeDown?.setImageResource(if (i == 0) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) + override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) { + val audioManager = audioManager + audioManager?.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0) + setPauseWhenZeroVolume(i < 1) + volumeDown?.setImageResource(if (i == 0) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) + } - } + override fun onStartTrackingTouch(seekBar: SeekBar) { + } - override fun onStartTrackingTouch(seekBar: SeekBar) { + override fun onStopTrackingTouch(seekBar: SeekBar) { + } - } + override fun onClick(view: View) { + val audioManager = audioManager + when (view.id) { + R.id.volumeDown -> audioManager?.adjustStreamVolume( + AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 0 + ) + R.id.volumeUp -> audioManager?.adjustStreamVolume( + AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0 + ) + } + } - override fun onStopTrackingTouch(seekBar: SeekBar) { + fun tintWhiteColor() { + val iconColor = Color.WHITE + volumeDown.setColorFilter(iconColor, PorterDuff.Mode.SRC_IN) + volumeUp.setColorFilter(iconColor, PorterDuff.Mode.SRC_IN) - } + ViewUtil.setProgressDrawable(volumeSeekBar, iconColor, true) + } - override fun onClick(view: View) { - val audioManager = audioManager - when (view.id) { - R.id.volumeDown -> audioManager?.adjustStreamVolume( - AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 0 - ) - R.id.volumeUp -> audioManager?.adjustStreamVolume( - AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0 - ) - } - } + fun setTintable(color: Int) { + ViewUtil.setProgressDrawable(volumeSeekBar, color, true) + } - fun tintWhiteColor() { - val iconColor = Color.WHITE - volumeDown.setColorFilter(iconColor, PorterDuff.Mode.SRC_IN) - volumeUp.setColorFilter(iconColor, PorterDuff.Mode.SRC_IN) + fun removeThumb() { + volumeSeekBar.thumb = null + } - ViewUtil.setProgressDrawable(volumeSeekBar, iconColor, true) + private fun setPauseWhenZeroVolume(pauseWhenZeroVolume: Boolean) { + if (PreferenceUtil.getInstance(requireContext()).pauseOnZeroVolume()) if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) { + MusicPlayerRemote.pauseSong() + } + } - } + fun setTintableColor(color: Int) { + volumeDown.setColorFilter(color, PorterDuff.Mode.SRC_IN) + volumeUp.setColorFilter(color, PorterDuff.Mode.SRC_IN) + //TintHelper.setTint(volumeSeekBar, color, false) + ViewUtil.setProgressDrawable(volumeSeekBar, color, true) + } - fun setTintable(color: Int) { - ViewUtil.setProgressDrawable(volumeSeekBar, color, true) - } + companion object { - fun removeThumb() { - volumeSeekBar.thumb = null - } - - private fun setPauseWhenZeroVolume(pauseWhenZeroVolume: Boolean) { - if (PreferenceUtil.getInstance(requireContext()).pauseOnZeroVolume()) if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) { - MusicPlayerRemote.pauseSong() - } - } - - fun setTintableColor(color: Int) { - volumeDown.setColorFilter(color, PorterDuff.Mode.SRC_IN) - volumeUp.setColorFilter(color, PorterDuff.Mode.SRC_IN) - //TintHelper.setTint(volumeSeekBar, color, false) - ViewUtil.setProgressDrawable(volumeSeekBar, color, true) - } - - companion object { - - fun newInstance(): VolumeFragment { - return VolumeFragment() - } - } + fun newInstance(): VolumeFragment { + return VolumeFragment() + } + } } 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 32bb628c0..f77f37640 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 @@ -14,27 +14,147 @@ package code.name.monkey.retromusic.fragments.player.circle +import android.animation.ObjectAnimator +import android.content.Context import android.graphics.Color +import android.graphics.PorterDuff +import android.media.AudioManager import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import androidx.appcompat.widget.Toolbar +import code.name.monkey.appthemehelper.ThemeStore +import code.name.monkey.appthemehelper.util.ATHUtil +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.extensions.hide +import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment +import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper +import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback +import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener +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.views.SeekArc +import code.name.monkey.retromusic.views.SeekArc.OnSeekArcChangeListener +import code.name.monkey.retromusic.volume.AudioVolumeObserver +import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener +import kotlinx.android.synthetic.main.fragment_circle_player.nextButton +import kotlinx.android.synthetic.main.fragment_circle_player.playPauseButton +import kotlinx.android.synthetic.main.fragment_circle_player.playerToolbar +import kotlinx.android.synthetic.main.fragment_circle_player.previousButton +import kotlinx.android.synthetic.main.fragment_circle_player.progressSlider +import kotlinx.android.synthetic.main.fragment_circle_player.songCurrentProgress +import kotlinx.android.synthetic.main.fragment_circle_player.songInfo +import kotlinx.android.synthetic.main.fragment_circle_player.songTotalTime +import kotlinx.android.synthetic.main.fragment_circle_player.text +import kotlinx.android.synthetic.main.fragment_circle_player.title +import kotlinx.android.synthetic.main.fragment_circle_player.volumeSeekBar /** * Created by hemanths on 2020-01-06. */ -class CirclePlayerFragment : AbsPlayerFragment() { +class CirclePlayerFragment : AbsPlayerFragment(), Callback, OnAudioVolumeChangedListener, OnSeekArcChangeListener { + + private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper + private var audioVolumeObserver: AudioVolumeObserver? = null + + private val audioManager: AudioManager? + get() = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) + } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_circle_player, container, false) } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupViews() + title.isSelected = true + } + + private fun setUpPlayerToolbar() { + playerToolbar.apply { + inflateMenu(R.menu.menu_player) + setNavigationOnClickListener { requireActivity().onBackPressed() } + setOnMenuItemClickListener(this@CirclePlayerFragment) + ToolbarContentTintHelper.colorizeToolbar( + this, + ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal), + requireActivity() + ) + } + } + + private fun setupViews() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews(MusicPlayerRemote.songProgressMillis, MusicPlayerRemote.songDurationMillis) + } + } + }) + ViewUtil.setProgressDrawable(progressSlider, ThemeStore.accentColor(requireContext())) + volumeSeekBar.progressColor = ThemeStore.accentColor(requireContext()) + setUpPlayPauseFab() + setUpPrevNext() + setUpPlayerToolbar() + } + + private fun setUpPrevNext() { + updatePrevNextColor() + nextButton.setOnClickListener { MusicPlayerRemote.playNextSong() } + previousButton.setOnClickListener { MusicPlayerRemote.back() } + } + + private fun updatePrevNextColor() { + val accentColor = ThemeStore.accentColor(requireContext()) + nextButton.setColorFilter(accentColor, PorterDuff.Mode.SRC_IN) + previousButton.setColorFilter(accentColor, PorterDuff.Mode.SRC_IN) + } + + private fun setUpPlayPauseFab() { + TintHelper.setTintAuto(playPauseButton, ThemeStore.accentColor(requireContext()), false) + //TintHelper.setTintAuto(playPauseButton, ATHUtil.resolveColor(requireContext(), R.attr.colorSurface), true) + playPauseButton.setOnClickListener(PlayPauseButtonOnClickHandler()) + } + + override fun onResume() { + super.onResume() + progressViewUpdateHelper.start() + if (audioVolumeObserver == null) { + audioVolumeObserver = AudioVolumeObserver(requireActivity()) + } + audioVolumeObserver!!.register(AudioManager.STREAM_MUSIC, this) + + val audioManager = audioManager + if (audioManager != null) { + volumeSeekBar.max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) + volumeSeekBar.progress = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) + } + volumeSeekBar.setOnSeekArcChangeListener(this) + } + + override fun onPause() { + super.onPause() + progressViewUpdateHelper.stop() + } + override fun playerToolbar(): Toolbar? { - return null + return playerToolbar } override fun onShow() { @@ -45,7 +165,7 @@ class CirclePlayerFragment : AbsPlayerFragment() { override fun onBackPressed(): Boolean = false - override fun toolbarIconColor(): Int = Color.RED + override fun toolbarIconColor(): Int = ATHUtil.resolveColor(requireContext(), android.R.attr.colorControlNormal) override val paletteColor: Int get() = Color.BLACK @@ -55,4 +175,77 @@ class CirclePlayerFragment : AbsPlayerFragment() { override fun onFavoriteToggled() { } + + override fun onPlayStateChanged() { + updatePlayPauseDrawableState() + } + + override fun onPlayingMetaChanged() { + super.onPlayingMetaChanged() + updateSong() + } + + override fun onServiceConnected() { + super.onServiceConnected() + updateSong() + updatePlayPauseDrawableState() + } + + private fun updateSong() { + val song = MusicPlayerRemote.currentSong + title.text = song.title + text.text = song.artistName + + if (PreferenceUtil.getInstance(requireContext()).isSongInfo) { + songInfo?.text = getSongInfo(song) + } else { + songInfo?.hide() + } + } + + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) + songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) + } + + private fun updatePlayPauseDrawableState() { + when { + MusicPlayerRemote.isPlaying -> playPauseButton.setImageResource(R.drawable.ic_pause_white_24dp) + else -> playPauseButton.setImageResource(R.drawable.ic_play_arrow_white_24dp) + } + } + + override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) { + if (volumeSeekBar == null) { + return + } + + volumeSeekBar.max = maxVolume + volumeSeekBar.progress = currentVolume + } + + override fun onDestroyView() { + super.onDestroyView() + if (audioVolumeObserver != null) { + audioVolumeObserver!!.unregister() + } + } + + override fun onProgressChanged(seekArc: SeekArc?, progress: Int, fromUser: Boolean) { + val audioManager = audioManager + audioManager?.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0) + } + + override fun onStartTrackingTouch(seekArc: SeekArc?) { + } + + override fun onStopTrackingTouch(seekArc: SeekArc?) { + } } \ No newline at end of file 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 106e56a63..547e898d3 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 @@ -22,7 +22,9 @@ import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.RetroColorUtil import com.bumptech.glide.Glide import com.bumptech.glide.request.animation.GlideAnimation -import kotlinx.android.synthetic.main.fragment_color_player.* +import kotlinx.android.synthetic.main.fragment_color_player.colorGradientBackground +import kotlinx.android.synthetic.main.fragment_color_player.playerImage +import kotlinx.android.synthetic.main.fragment_color_player.playerToolbar class ColorFragment : AbsPlayerFragment() { @@ -43,7 +45,7 @@ class ColorFragment : AbsPlayerFragment() { } override fun onFavoriteToggled() { - + //toggleFavorite(MusicPlayerRemote.currentSong) } override fun onShow() { diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt index 364f60d3b..1532c8388 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt @@ -122,6 +122,7 @@ class NowPlayingScreenPreferenceDialog : PreferenceDialogFragmentCompat(), ViewP nowPlayingScreen == NowPlayingScreen.COLOR || nowPlayingScreen == NowPlayingScreen.SIMPLE || nowPlayingScreen == NowPlayingScreen.BLUR_CARD || + nowPlayingScreen == NowPlayingScreen.CIRCLE || nowPlayingScreen == NowPlayingScreen.ADAPTIVE) && !App.isProVersion() } diff --git a/app/src/main/res/drawable-xxxhdpi/np_minimalistic_circle.webp b/app/src/main/res/drawable-xxxhdpi/np_minimalistic_circle.webp new file mode 100644 index 000000000..bedbff790 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/np_minimalistic_circle.webp differ diff --git a/app/src/main/res/drawable-xxxhdpi/np_simple.webp b/app/src/main/res/drawable-xxxhdpi/np_simple.webp index d44abc08e..a56e9ee95 100644 Binary files a/app/src/main/res/drawable-xxxhdpi/np_simple.webp and b/app/src/main/res/drawable-xxxhdpi/np_simple.webp differ diff --git a/app/src/main/res/drawable-xxxhdpi/np_tiny.webp b/app/src/main/res/drawable-xxxhdpi/np_tiny.webp index 780f8815c..6ae2b804c 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/ic_app_shortcut_last_added.xml b/app/src/main/res/drawable/ic_app_shortcut_last_added.xml index c9e3d3e83..934f0be6d 100644 --- a/app/src/main/res/drawable/ic_app_shortcut_last_added.xml +++ b/app/src/main/res/drawable/ic_app_shortcut_last_added.xml @@ -15,6 +15,6 @@ + android:pathData="M124.35,92h-16.2v16.2h-8.1V92H83.85v-8.1h16.2V67.65h8.1v16.2h16.2M128.4,55.5H79.8a8.1,8.1,0,0,0-8.1,8.1v48.6a8.1,8.1,0,0,0,8.1,8.1h48.6a8.1,8.1,0,0,0,8.1-8.1V63.6a8.1,8.1,0,0,0-8.1-8.1M63.6,71.7H55.5v56.7a8.1,8.1,0,0,0,8.1,8.1h56.7v-8.1H63.6Z" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_app_shortcut_search.xml b/app/src/main/res/drawable/ic_app_shortcut_search.xml index dfefe8062..4e05cab7a 100644 --- a/app/src/main/res/drawable/ic_app_shortcut_search.xml +++ b/app/src/main/res/drawable/ic_app_shortcut_search.xml @@ -15,6 +15,6 @@ + android:pathData="M104.333 97.3333H100.647L99.34 96.0733C103.913 90.7533 106.667 83.8467 106.667 76.3333C106.667 59.58 93.0867 46 76.3333 46C59.58 46 46 59.58 46 76.3333C46 93.0867 59.58 106.667 76.3333 106.667C83.8467 106.667 90.7533 103.913 96.0733 99.34L97.3333 100.647V104.333L120.667 127.62L127.62 120.667L104.333 97.3333V97.3333ZM76.3333 97.3333C64.7133 97.3333 55.3333 87.9533 55.3333 76.3333C55.3333 64.7133 64.7133 55.3333 76.3333 55.3333C87.9533 55.3333 97.3333 64.7133 97.3333 76.3333C97.3333 87.9533 87.9533 97.3333 76.3333 97.3333Z" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_circle_player.xml b/app/src/main/res/layout/fragment_circle_player.xml index ef8396cc2..6cec175c0 100644 --- a/app/src/main/res/layout/fragment_circle_player.xml +++ b/app/src/main/res/layout/fragment_circle_player.xml @@ -17,16 +17,44 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:clickable="true" + android:focusable="true" android:orientation="vertical"> + + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/playerToolbar"> @@ -44,40 +74,47 @@ android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" - android:padding="16dp" android:textAppearance="@style/TextViewBody1" + app:layout_constraintBottom_toTopOf="@+id/volumeSeekBar" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/titleContainer" + app:layout_constraintTop_toBottomOf="@+id/titleContainer" tools:text="@tools:sample/lorem/random" /> + app:touchInside="true" + tools:progress="50" /> + app:backgroundTint="?attr/colorSurface" + app:layout_constraintBottom_toBottomOf="@id/volumeSeekBar" + app:layout_constraintEnd_toEndOf="@id/volumeSeekBar" + app:layout_constraintStart_toStartOf="@id/volumeSeekBar" + app:layout_constraintTop_toTopOf="@id/volumeSeekBar" /> + app:layout_constraintStart_toStartOf="@+id/volumeSeekBar" /> + + + + + + + + + + app:layout_constraintStart_toStartOf="parent" + tools:text="@tools:sample/lorem/random" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_color_player_playback_controls.xml b/app/src/main/res/layout/fragment_color_player_playback_controls.xml index a6a23c938..0080b2097 100644 --- a/app/src/main/res/layout/fragment_color_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_color_player_playback_controls.xml @@ -23,8 +23,6 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentLeft="true" - - android:gravity="center_vertical|left|end" android:paddingLeft="8dp" android:singleLine="true" @@ -37,8 +35,6 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" - - android:gravity="center_vertical|right|end" android:paddingRight="8dp" android:singleLine="true" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e3ec96293..26bba5b10 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -818,4 +818,5 @@ Your account data is only used for authentication. Circle + Volume