mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-25 01:20:34 +00:00
PopUpPlayer now has a play and pause button. Tapping now doesnt pause or unpause the video and instead shows this button.
This commit is contained in:
parent
f94f14ab65
commit
06292bceb2
@ -175,12 +175,10 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
// Init
|
// Init
|
||||||
//////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
View rootView;
|
|
||||||
|
|
||||||
@SuppressLint("RtlHardcoded")
|
@SuppressLint("RtlHardcoded")
|
||||||
private void initPopup() {
|
private void initPopup() {
|
||||||
if (DEBUG) Log.d(TAG, "initPopup() called");
|
if (DEBUG) Log.d(TAG, "initPopup() called");
|
||||||
rootView = View.inflate(this, R.layout.player_popup, null);
|
View rootView = View.inflate(this, R.layout.player_popup, null);
|
||||||
playerImpl.setup(rootView);
|
playerImpl.setup(rootView);
|
||||||
|
|
||||||
shutdownFlingVelocity = PlayerHelper.getShutdownFlingVelocity(this);
|
shutdownFlingVelocity = PlayerHelper.getShutdownFlingVelocity(this);
|
||||||
@ -373,6 +371,7 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
protected class VideoPlayerImpl extends VideoPlayer implements View.OnLayoutChangeListener {
|
protected class VideoPlayerImpl extends VideoPlayer implements View.OnLayoutChangeListener {
|
||||||
private TextView resizingIndicator;
|
private TextView resizingIndicator;
|
||||||
private ImageButton fullScreenButton;
|
private ImageButton fullScreenButton;
|
||||||
|
private ImageView videoPlayPause;
|
||||||
|
|
||||||
private View extraOptionsView;
|
private View extraOptionsView;
|
||||||
|
|
||||||
@ -394,6 +393,8 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
resizingIndicator = rootView.findViewById(R.id.resizing_indicator);
|
resizingIndicator = rootView.findViewById(R.id.resizing_indicator);
|
||||||
fullScreenButton = rootView.findViewById(R.id.fullScreenButton);
|
fullScreenButton = rootView.findViewById(R.id.fullScreenButton);
|
||||||
fullScreenButton.setOnClickListener(v -> onFullScreenButtonClicked());
|
fullScreenButton.setOnClickListener(v -> onFullScreenButtonClicked());
|
||||||
|
videoPlayPause = rootView.findViewById(R.id.videoPlayPause);
|
||||||
|
videoPlayPause.setOnClickListener(this::onPlayPauseButtonPressed);
|
||||||
|
|
||||||
extraOptionsView = rootView.findViewById(R.id.extraOptionsView);
|
extraOptionsView = rootView.findViewById(R.id.extraOptionsView);
|
||||||
rootView.addOnLayoutChangeListener(this);
|
rootView.addOnLayoutChangeListener(this);
|
||||||
@ -409,6 +410,10 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
view.setStyle(captionStyle);
|
view.setStyle(captionStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onPlayPauseButtonPressed(View ib) {
|
||||||
|
onPlayPause();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLayoutChange(final View view, int left, int top, int right, int bottom,
|
public void onLayoutChange(final View view, int left, int top, int right, int bottom,
|
||||||
int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
||||||
@ -654,6 +659,7 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
public void onPlaying() {
|
public void onPlaying() {
|
||||||
super.onPlaying();
|
super.onPlaying();
|
||||||
updateNotification(R.drawable.ic_pause_white);
|
updateNotification(R.drawable.ic_pause_white);
|
||||||
|
videoPlayPause.setBackgroundResource(R.drawable.ic_pause_white);
|
||||||
lockManager.acquireWifiAndCpu();
|
lockManager.acquireWifiAndCpu();
|
||||||
|
|
||||||
hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME);
|
hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME);
|
||||||
@ -669,12 +675,14 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
public void onPaused() {
|
public void onPaused() {
|
||||||
super.onPaused();
|
super.onPaused();
|
||||||
updateNotification(R.drawable.ic_play_arrow_white);
|
updateNotification(R.drawable.ic_play_arrow_white);
|
||||||
|
videoPlayPause.setBackgroundResource(R.drawable.ic_play_arrow_white);
|
||||||
lockManager.releaseWifiAndCpu();
|
lockManager.releaseWifiAndCpu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPausedSeek() {
|
public void onPausedSeek() {
|
||||||
super.onPausedSeek();
|
super.onPausedSeek();
|
||||||
|
videoPlayPause.setBackgroundResource(R.drawable.ic_pause_white);
|
||||||
updateNotification(R.drawable.ic_play_arrow_white);
|
updateNotification(R.drawable.ic_play_arrow_white);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -682,10 +690,27 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
public void onCompleted() {
|
public void onCompleted() {
|
||||||
super.onCompleted();
|
super.onCompleted();
|
||||||
updateNotification(R.drawable.ic_replay_white);
|
updateNotification(R.drawable.ic_replay_white);
|
||||||
showAndAnimateControl(R.drawable.ic_replay_white, false);
|
videoPlayPause.setBackgroundResource(R.drawable.ic_replay_white);
|
||||||
lockManager.releaseWifiAndCpu();
|
lockManager.releaseWifiAndCpu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showControlsThenHide() {
|
||||||
|
videoPlayPause.setVisibility(View.VISIBLE);
|
||||||
|
super.showControlsThenHide();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showControls(long duration) {
|
||||||
|
videoPlayPause.setVisibility(View.VISIBLE);
|
||||||
|
super.showControls(duration);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideControls(final long duration, long delay) {
|
||||||
|
super.hideControlsAndButton(duration, delay, videoPlayPause);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*//////////////////////////////////////////////////////////////////////////
|
/*//////////////////////////////////////////////////////////////////////////
|
||||||
// Utils
|
// Utils
|
||||||
//////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////*/
|
||||||
@ -719,6 +744,8 @@ public final class PopupVideoPlayer extends Service {
|
|||||||
Log.d(TAG, "onDoubleTap() called with: e = [" + e + "]" + "rawXy = " + e.getRawX() + ", " + e.getRawY() + ", xy = " + e.getX() + ", " + e.getY());
|
Log.d(TAG, "onDoubleTap() called with: e = [" + e + "]" + "rawXy = " + e.getRawX() + ", " + e.getRawY() + ", xy = " + e.getX() + ", " + e.getY());
|
||||||
if (playerImpl == null || !playerImpl.isPlaying()) return false;
|
if (playerImpl == null || !playerImpl.isPlaying()) return false;
|
||||||
|
|
||||||
|
playerImpl.hideControls(0, 0);
|
||||||
|
|
||||||
if (e.getX() > popupWidth / 2) {
|
if (e.getX() > popupWidth / 2) {
|
||||||
playerImpl.onFastForward();
|
playerImpl.onFastForward();
|
||||||
} else {
|
} else {
|
||||||
|
@ -40,7 +40,6 @@ import android.view.Menu;
|
|||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.SurfaceView;
|
import android.view.SurfaceView;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageButton;
|
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.PopupMenu;
|
import android.widget.PopupMenu;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
@ -158,8 +157,6 @@ public abstract class VideoPlayer extends BasePlayer
|
|||||||
private int captionPopupMenuGroupId = 89;
|
private int captionPopupMenuGroupId = 89;
|
||||||
private PopupMenu captionPopupMenu;
|
private PopupMenu captionPopupMenu;
|
||||||
|
|
||||||
private ImageButton buttonPlayPause;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public VideoPlayer(String debugTag, Context context) {
|
public VideoPlayer(String debugTag, Context context) {
|
||||||
@ -214,9 +211,6 @@ public abstract class VideoPlayer extends BasePlayer
|
|||||||
|
|
||||||
((ProgressBar) this.loadingPanel.findViewById(R.id.progressBarLoadingPanel))
|
((ProgressBar) this.loadingPanel.findViewById(R.id.progressBarLoadingPanel))
|
||||||
.getIndeterminateDrawable().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);
|
.getIndeterminateDrawable().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);
|
||||||
|
|
||||||
buttonPlayPause = rootView.findViewById(R.id.videoPlayPause);
|
|
||||||
buttonPlayPause.setTag(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void setupSubtitleView(@NonNull SubtitleView view,
|
protected abstract void setupSubtitleView(@NonNull SubtitleView view,
|
||||||
@ -232,22 +226,6 @@ public abstract class VideoPlayer extends BasePlayer
|
|||||||
captionTextView.setOnClickListener(this);
|
captionTextView.setOnClickListener(this);
|
||||||
resizeView.setOnClickListener(this);
|
resizeView.setOnClickListener(this);
|
||||||
playbackLiveSync.setOnClickListener(this);
|
playbackLiveSync.setOnClickListener(this);
|
||||||
|
|
||||||
buttonPlayPause.setOnClickListener(new View.OnClickListener() {
|
|
||||||
|
|
||||||
public void onClick(View ib) {
|
|
||||||
if((int)ib.getTag()==2) {
|
|
||||||
onPlay();
|
|
||||||
ib.setBackgroundResource(R.drawable.ic_pause_white);
|
|
||||||
ib.setTag(1);
|
|
||||||
} else {
|
|
||||||
ib.setBackgroundResource(R.drawable.ic_play_arrow_white);
|
|
||||||
onPause();
|
|
||||||
ib.setTag(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -886,68 +864,18 @@ public abstract class VideoPlayer extends BasePlayer
|
|||||||
controlViewAnimator.start();
|
controlViewAnimator.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showPlayPause(final int drawableId) {
|
|
||||||
if (DEBUG) Log.d(TAG, "showAndAnimateControl() called with: drawableId = [" + drawableId + "], goneOnEnd = [" + false + "]");
|
|
||||||
if (controlViewAnimator != null && controlViewAnimator.isRunning()) {
|
|
||||||
if (DEBUG) Log.d(TAG, "showAndAnimateControl: controlViewAnimator.isRunning");
|
|
||||||
controlViewAnimator.end();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (drawableId == -1) {
|
|
||||||
if (controlAnimationView.getVisibility() == View.VISIBLE) {
|
|
||||||
controlViewAnimator = ObjectAnimator.ofPropertyValuesHolder(controlAnimationView,
|
|
||||||
PropertyValuesHolder.ofFloat(View.ALPHA, 1f, 0f),
|
|
||||||
PropertyValuesHolder.ofFloat(View.SCALE_X, 1.4f, 1f),
|
|
||||||
PropertyValuesHolder.ofFloat(View.SCALE_Y, 1.4f, 1f)
|
|
||||||
).setDuration(DEFAULT_CONTROLS_DURATION);
|
|
||||||
controlViewAnimator.addListener(new AnimatorListenerAdapter() {
|
|
||||||
@Override
|
|
||||||
public void onAnimationEnd(Animator animation) {
|
|
||||||
controlAnimationView.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
controlViewAnimator.start();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
float scaleFrom = 1f, scaleTo = 1.4f;
|
|
||||||
float alphaFrom = 0f, alphaTo = 1f;
|
|
||||||
|
|
||||||
|
|
||||||
controlViewAnimator = ObjectAnimator.ofPropertyValuesHolder(controlAnimationView,
|
|
||||||
PropertyValuesHolder.ofFloat(View.ALPHA, alphaFrom, alphaTo),
|
|
||||||
PropertyValuesHolder.ofFloat(View.SCALE_X, scaleFrom, scaleTo),
|
|
||||||
PropertyValuesHolder.ofFloat(View.SCALE_Y, scaleFrom, scaleTo)
|
|
||||||
);
|
|
||||||
controlViewAnimator.setDuration(500);
|
|
||||||
controlViewAnimator.addListener(new AnimatorListenerAdapter() {
|
|
||||||
@Override
|
|
||||||
public void onAnimationEnd(Animator animation) {
|
|
||||||
controlAnimationView.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
controlAnimationView.setVisibility(View.VISIBLE);
|
|
||||||
controlAnimationView.setImageDrawable(ContextCompat.getDrawable(context, drawableId));
|
|
||||||
controlViewAnimator.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSomePopupMenuVisible() {
|
public boolean isSomePopupMenuVisible() {
|
||||||
return isSomePopupMenuVisible;
|
return isSomePopupMenuVisible;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showControlsThenHide() {
|
public void showControlsThenHide() {
|
||||||
if (DEBUG) Log.d(TAG, "showControlsThenHide() called");
|
if (DEBUG) Log.d(TAG, "showControlsThenHide() called");
|
||||||
buttonPlayPause.setVisibility(View.VISIBLE);
|
|
||||||
animateView(controlsRoot, true, DEFAULT_CONTROLS_DURATION, 0,
|
animateView(controlsRoot, true, DEFAULT_CONTROLS_DURATION, 0,
|
||||||
() -> hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME));
|
() -> hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showControls(long duration) {
|
public void showControls(long duration) {
|
||||||
if (DEBUG) Log.d(TAG, "showControls() called");
|
if (DEBUG) Log.d(TAG, "showControls() called");
|
||||||
buttonPlayPause.setVisibility(View.VISIBLE);
|
|
||||||
controlsVisibilityHandler.removeCallbacksAndMessages(null);
|
controlsVisibilityHandler.removeCallbacksAndMessages(null);
|
||||||
animateView(controlsRoot, true, duration);
|
animateView(controlsRoot, true, duration);
|
||||||
}
|
}
|
||||||
@ -955,17 +883,23 @@ public abstract class VideoPlayer extends BasePlayer
|
|||||||
public void hideControls(final long duration, long delay) {
|
public void hideControls(final long duration, long delay) {
|
||||||
if (DEBUG) Log.d(TAG, "hideControls() called with: delay = [" + delay + "]");
|
if (DEBUG) Log.d(TAG, "hideControls() called with: delay = [" + delay + "]");
|
||||||
controlsVisibilityHandler.removeCallbacksAndMessages(null);
|
controlsVisibilityHandler.removeCallbacksAndMessages(null);
|
||||||
controlsVisibilityHandler.postDelayed(hideControlsHandler(duration), delay);
|
controlsVisibilityHandler.postDelayed(
|
||||||
|
() -> animateView(controlsRoot, false, duration), delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Runnable hideControlsHandler(long duration)
|
public void hideControlsAndButton(final long duration, long delay, View button) {
|
||||||
|
if (DEBUG) Log.d(TAG, "hideControls() called with: delay = [" + delay + "]");
|
||||||
|
controlsVisibilityHandler.removeCallbacksAndMessages(null);
|
||||||
|
controlsVisibilityHandler.postDelayed(hideControlsAndButtonHandler(duration, button), delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Runnable hideControlsAndButtonHandler(long duration, View videoPlayPause)
|
||||||
{
|
{
|
||||||
return () -> {
|
return () -> {
|
||||||
buttonPlayPause.setVisibility(View.INVISIBLE);
|
videoPlayPause.setVisibility(View.INVISIBLE);
|
||||||
animateView(controlsRoot, false,duration);
|
animateView(controlsRoot, false,duration);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/*//////////////////////////////////////////////////////////////////////////
|
/*//////////////////////////////////////////////////////////////////////////
|
||||||
// Getters and Setters
|
// Getters and Setters
|
||||||
//////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////*/
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@ -218,21 +217,6 @@
|
|||||||
android:weightSum="5.5">
|
android:weightSum="5.5">
|
||||||
<!--tools:visibility="gone">-->
|
<!--tools:visibility="gone">-->
|
||||||
|
|
||||||
<ImageButton
|
|
||||||
android:id="@+id/videoPlayPause"
|
|
||||||
android:layout_width="30dp"
|
|
||||||
android:layout_height="60dp"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@drawable/ic_pause_white"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"
|
|
||||||
android:scaleType="centerInside"
|
|
||||||
android:scaleX="1"
|
|
||||||
android:scaleY="1"
|
|
||||||
android:visibility="invisible"
|
|
||||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/controlAnimationView"
|
android:id="@+id/controlAnimationView"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
@ -244,6 +228,26 @@
|
|||||||
tools:visibility="visible"/>
|
tools:visibility="visible"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:weightSum="5.5">
|
||||||
|
<!--tools:visibility="gone">-->
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/videoPlayPause"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:scaleType="centerInside"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:ignore="ContentDescription"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/currentDisplaySeek"
|
android:id="@+id/currentDisplaySeek"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
Loading…
Reference in New Issue
Block a user