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 209e8075..acb67d59 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 bfa10fb9..0ab8c3fa 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 32bb628c..f77f3764 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 106e56a6..547e898d 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 364f60d3..1532c838 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 00000000..bedbff79 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 d44abc08..a56e9ee9 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 780f8815..6ae2b804 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 c9e3d3e8..934f0be6 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 dfefe806..4e05cab7 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 ef8396cc..6cec175c 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 a6a23c93..0080b209 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 e3ec9629..26bba5b1 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