Merge pull request #2171 from Kruna1Pate1/fix/minimized-player

Fix minimized player and repeat button
This commit is contained in:
Bnyro 2022-12-02 13:46:58 +01:00 committed by GitHub
commit 085eff2041
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 23 deletions

View File

@ -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<StreamItem>?) {
if (!PlayerHelper.relatedStreamsEnabled) return

View File

@ -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

View File

@ -277,7 +277,7 @@
</FrameLayout>
<ImageButton
android:id="@id/exo_play_pause"
android:id="@+id/playPauseBTN"
style="@style/ExoStyledControls.Button.Center.PlayPause"
android:layout_marginHorizontal="10dp"
android:background="?android:selectableItemBackgroundBorderless"

View File

@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!-- Replaces the drawables of the default exoplayer controls (see https://github.com/google/ExoPlayer/blob/release-v2/library/ui/src/main/res/values/drawables.xml) -->
<resources>
<drawable name="exo_styled_controls_play">@drawable/ic_play</drawable>
<drawable name="exo_styled_controls_pause">@drawable/ic_pause</drawable>
<drawable name="exo_notification_small_icon">@drawable/ic_launcher_lockscreen</drawable>
</resources>