diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index d7b87a6ad..20fd982e7 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -315,10 +315,9 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { BackgroundHelper.stopBackgroundPlay(requireContext()) } - binding.playImageView.setOnClickListener { + val playPauseClickListner = View.OnClickListener { if (!exoPlayer.isPlaying) { // start or go on playing - binding.playImageView.setImageResource(R.drawable.ic_pause) if (exoPlayer.playbackState == Player.STATE_ENDED) { // restart video if finished exoPlayer.seekTo(0) @@ -326,10 +325,11 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { exoPlayer.play() } else { // pause the video - binding.playImageView.setImageResource(R.drawable.ic_play) exoPlayer.pause() } } + playerBinding.playPauseBTN.setOnClickListener(playPauseClickListner) + binding.playImageView.setOnClickListener(playPauseClickListner) // video description and chapters toggle binding.playerTitleLayout.setOnClickListener { @@ -829,6 +829,18 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { } } + override fun onEvents(player: Player, events: Player.Events) { + super.onEvents(player, events) + if (events.containsAny( + Player.EVENT_PLAYBACK_STATE_CHANGED, + Player.EVENT_IS_PLAYING_CHANGED, + Player.EVENT_PLAY_WHEN_READY_CHANGED + ) + ) { + updatePlayPauseButton() + } + } + override fun onPlaybackStateChanged(playbackState: Int) { exoPlayerView.keepScreenOn = !( playbackState == Player.STATE_IDLE || @@ -847,22 +859,11 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { playNextVideo() } - when (playbackState) { - Player.STATE_READY -> { - // media actually playing - transitioning = false - binding.playImageView.setImageResource(R.drawable.ic_pause) - // update the PiP params to use the correct aspect ratio - if (usePiP()) activity?.setPictureInPictureParams(getPipParams()) - } - Player.STATE_ENDED -> { - // video has finished - binding.playImageView.setImageResource(R.drawable.ic_restart) - } - else -> { - // player in any other state - binding.playImageView.setImageResource(R.drawable.ic_play) - } + if (playbackState == Player.STATE_READY) { + // media actually playing + transitioning = false + // update the PiP params to use the correct aspect ratio + if (usePiP()) activity?.setPictureInPictureParams(getPipParams()) } // save the watch position when paused @@ -966,6 +967,22 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { } } + private fun updatePlayPauseButton() { + if (exoPlayer.isPlaying) { + // video is playing + binding.playImageView.setImageResource(R.drawable.ic_pause) + playerBinding.playPauseBTN.setImageResource(R.drawable.ic_pause) + } else if (exoPlayer.playbackState == Player.STATE_ENDED) { + // video has finished + binding.playImageView.setImageResource(R.drawable.ic_restart) + playerBinding.playPauseBTN.setImageResource(R.drawable.ic_restart) + } else { + // player in any other state + binding.playImageView.setImageResource(R.drawable.ic_play) + playerBinding.playPauseBTN.setImageResource(R.drawable.ic_play) + } + } + private fun initializeRelatedVideos(relatedStreams: List?) { if (!PlayerHelper.relatedStreamsEnabled) return diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index bf68e6739..6ae88e956 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -272,7 +272,7 @@ internal class CustomExoPlayerView( binding.exoBottomBar.visibility = visibility binding.closeImageButton.visibility = visibility binding.exoTitle.visibility = visibility - binding.exoPlayPause.visibility = visibility + binding.playPauseBTN.visibility = visibility // disable tap and swipe gesture if the player is locked playerGestureController.isEnabled = isLocked diff --git a/app/src/main/res/layout/exo_styled_player_control_view.xml b/app/src/main/res/layout/exo_styled_player_control_view.xml index f377d1a24..5710ef259 100644 --- a/app/src/main/res/layout/exo_styled_player_control_view.xml +++ b/app/src/main/res/layout/exo_styled_player_control_view.xml @@ -277,7 +277,7 @@ - @drawable/ic_play - @drawable/ic_pause @drawable/ic_launcher_lockscreen \ No newline at end of file