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" />