From 7b7e381a23dc77bf2fa32f62653d7908371bbc48 Mon Sep 17 00:00:00 2001 From: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> Date: Sun, 15 Jun 2025 11:07:32 -0400 Subject: [PATCH] Use MaterialButtonGroup in exo_playback_control_view.xml. Theme the play pause button in ViewVideoActivity. --- .../activities/ViewVideoActivity.java | 14 ++- .../ViewVideoActivityBindingAdapter.java | 37 ++++-- .../res/layout/exo_playback_control_view.xml | 105 +++++++++--------- 3 files changed, 93 insertions(+), 63 deletions(-) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java index 7cc91dc5..f2a4bed3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java @@ -14,6 +14,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; +import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Matrix; @@ -75,7 +76,6 @@ import androidx.media3.ui.PlayerControlView; import androidx.media3.ui.PlayerView; import androidx.media3.ui.TrackSelectionDialogBuilder; -import com.google.android.material.button.MaterialButton; import com.google.common.collect.ImmutableList; import com.otaliastudios.zoom.ZoomEngine; import com.otaliastudios.zoom.ZoomSurfaceView; @@ -285,6 +285,8 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe setContentView(binding.getRoot()); } + applyCustomTheme(); + setVolumeControlStream(AudioManager.STREAM_MUSIC); setTitle(" "); @@ -517,10 +519,9 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe setPlaybackSpeed(savedInstanceState.getInt(PLAYBACK_SPEED_STATE, 100)); } - MaterialButton playPauseButton = findViewById(R.id.exo_play_pause_button_exo_playback_control_view); Drawable playDrawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_24dp, null); Drawable pauseDrawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_pause_24dp, null); - playPauseButton.setOnClickListener(view -> { + binding.getPlayPauseButton().setOnClickListener(view -> { Util.handlePlayPauseButtonAction(player); }); @@ -531,7 +532,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe Player.EVENT_PLAY_WHEN_READY_CHANGED, Player.EVENT_PLAYBACK_STATE_CHANGED, Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED)) { - playPauseButton.setIcon(Util.shouldShowPlayButton(player) ? playDrawable : pauseDrawable); + binding.getPlayPauseButton().setIcon(Util.shouldShowPlayButton(player) ? playDrawable : pauseDrawable); } } @@ -810,6 +811,11 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe }); } + private void applyCustomTheme() { + binding.getPlayPauseButton().setBackgroundColor(mCustomThemeWrapper.getColorAccent()); + binding.getPlayPauseButton().setIconTint(ColorStateList.valueOf(mCustomThemeWrapper.getFABIconColor())); + } + private void preparePlayer(Bundle savedInstanceState) { if (mSharedPreferences.getBoolean(SharedPreferencesUtils.LOOP_VIDEO, true)) { player.setRepeatMode(Player.REPEAT_MODE_ALL); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java index c49b8647..118bfcc1 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java @@ -21,16 +21,22 @@ public class ViewVideoActivityBindingAdapter { @Nullable private ActivityViewVideoZoomableBinding zoomableBinding; - private MaterialButton muteButton; - private MaterialButton hdButton; - private BottomAppBar bottomAppBar; - private TextView titleTextView; - private MaterialButton backButton; - private MaterialButton downloadButton; - private MaterialButton playbackSpeedButton; + private final MaterialButton playPauseButton; + private final MaterialButton forwardButton; + private final MaterialButton rewindButton; + private final MaterialButton muteButton; + private final MaterialButton hdButton; + private final BottomAppBar bottomAppBar; + private final TextView titleTextView; + private final MaterialButton backButton; + private final MaterialButton downloadButton; + private final MaterialButton playbackSpeedButton; public ViewVideoActivityBindingAdapter(ActivityViewVideoBinding binding) { this.binding = binding; + playPauseButton = binding.getRoot().findViewById(R.id.exo_play_pause_button_exo_playback_control_view); + forwardButton = binding.getRoot().findViewById(R.id.exo_ffwd); + rewindButton = binding.getRoot().findViewById(R.id.exo_rew); muteButton = binding.getRoot().findViewById(R.id.mute_exo_playback_control_view); hdButton = binding.getRoot().findViewById(R.id.hd_exo_playback_control_view); bottomAppBar = binding.getRoot().findViewById(R.id.bottom_navigation_exo_playback_control_view); @@ -42,6 +48,9 @@ public class ViewVideoActivityBindingAdapter { public ViewVideoActivityBindingAdapter(ActivityViewVideoZoomableBinding binding) { zoomableBinding = binding; + playPauseButton = binding.getRoot().findViewById(R.id.exo_play_pause_button_exo_playback_control_view); + forwardButton = binding.getRoot().findViewById(R.id.exo_ffwd); + rewindButton = binding.getRoot().findViewById(R.id.exo_rew); muteButton = binding.getRoot().findViewById(R.id.mute_exo_playback_control_view); hdButton = binding.getRoot().findViewById(R.id.hd_exo_playback_control_view); bottomAppBar = binding.getRoot().findViewById(R.id.bottom_navigation_exo_playback_control_view); @@ -63,8 +72,20 @@ public class ViewVideoActivityBindingAdapter { return binding == null ? zoomableBinding.progressBarViewVideoActivity : binding.progressBarViewVideoActivity; } + public MaterialButton getPlayPauseButton() { + return playPauseButton; + } + + public MaterialButton getForwardButton() { + return forwardButton; + } + + public MaterialButton getRewindButton() { + return rewindButton; + } + public MaterialButton getMuteButton() { - return getRoot().findViewById(R.id.mute_exo_playback_control_view); + return muteButton; } public MaterialButton getHdButton() { diff --git a/app/src/main/res/layout/exo_playback_control_view.xml b/app/src/main/res/layout/exo_playback_control_view.xml index 0eb790ac..fb69acf4 100644 --- a/app/src/main/res/layout/exo_playback_control_view.xml +++ b/app/src/main/res/layout/exo_playback_control_view.xml @@ -1,6 +1,7 @@ - - + app:layout_constraintTop_toTopOf="parent" + app:strokeWidth="0dp" + tools:visibility="visible" /> - + app:layout_constraintStart_toEndOf="@id/mute_exo_playback_control_view" + app:layout_constraintTop_toTopOf="parent"> - + + + + + + + + app:layout_constraintStart_toEndOf="@id/button_group_exo_playback_control_view" + app:layout_constraintTop_toTopOf="parent" + app:strokeWidth="0dp" + tools:visibility="visible" />