Skip to content
Snippets Groups Projects
Commit 6b290fb9 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Hide audio player on lists scroll

see #729
parent 01696877
No related branches found
No related tags found
No related merge requests found
......@@ -28,7 +28,6 @@ import android.media.AudioManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
......@@ -242,15 +241,20 @@ public class AudioPlayerContainerActivity extends BaseActivity {
/**
* Show the audio player.
*/
public synchronized void showAudioPlayer() {
public void showAudioPlayer() {
mActivityHandler.sendEmptyMessageDelayed(ACTION_SHOW_PLAYER, 100L);
}
private void showAudioPlayerImpl() {
if (!isAudioPlayerReady()) initAudioPlayer();
if (mAudioPlayerContainer.getVisibility() == View.GONE) {
if (mAudioPlayerContainer.getVisibility() != View.VISIBLE) {
mAudioPlayerContainer.setVisibility(View.VISIBLE);
}
if (mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) {
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
mBottomSheetBehavior.setHideable(false);
mBottomSheetBehavior.lock(false);
}
/**
......@@ -278,6 +282,10 @@ public class AudioPlayerContainerActivity extends BaseActivity {
* Hide the audio player.
*/
public void hideAudioPlayer() {
mActivityHandler.sendEmptyMessage(ACTION_HIDE_PLAYER);
}
private void hideAudioPlayerImpl() {
if (!isAudioPlayerReady()) return;
mBottomSheetBehavior.setHideable(true);
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
......@@ -366,8 +374,11 @@ public class AudioPlayerContainerActivity extends BaseActivity {
PlaylistManager.Companion.getShowAudioPlayer().observe(this, new Observer<Boolean>() {
@Override
public void onChanged(@Nullable Boolean showPlayer) {
if (showPlayer) mActivityHandler.sendEmptyMessageDelayed(ACTION_SHOW_PLAYER, 100L);
else mActivityHandler.sendEmptyMessage(ACTION_HIDE_PLAYER);
if (showPlayer) showAudioPlayer();
else {
hideAudioPlayer();
if (mBottomSheetBehavior != null) mBottomSheetBehavior.lock(true);
}
}
});
MediaParsingService.Companion.getProgress().observe(this, new Observer<ScanProgress>() {
......@@ -416,13 +427,13 @@ public class AudioPlayerContainerActivity extends BaseActivity {
owner.showProgressBar();
break;
case ACTION_SHOW_PLAYER:
owner.showAudioPlayer();
owner.showAudioPlayerImpl();
owner.updateContainerPadding(true);
owner.applyMarginToProgressBar(owner.mBottomSheetBehavior.getPeekHeight());
break;
case ACTION_HIDE_PLAYER:
removeMessages(ACTION_SHOW_PLAYER);
owner.hideAudioPlayer();
owner.hideAudioPlayerImpl();
owner.updateContainerPadding(false);
owner.applyMarginToProgressBar(0);
break;
......
......@@ -5,6 +5,8 @@ import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import org.videolan.vlc.gui.AudioPlayerContainerActivity;
import androidx.annotation.NonNull;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
......@@ -13,7 +15,9 @@ public class BottomSheetBehavior<V extends View> extends com.google.android.mate
public static final String TAG = "VLC/BottomSheetBehavior";
private boolean lock = false;
public BottomSheetBehavior() {}
public BottomSheetBehavior() {
setHideable(true);
}
public BottomSheetBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
......@@ -34,6 +38,18 @@ public class BottomSheetBehavior<V extends View> extends com.google.android.mate
}
}
@Override
public void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull V child, @NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) {
if (lock) return;
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
final AudioPlayerContainerActivity activity = (AudioPlayerContainerActivity) child.getContext();
activity.hideAudioPlayer();
} else if (dyConsumed < 0 && getState() == BottomSheetBehavior.STATE_HIDDEN) {
final AudioPlayerContainerActivity activity = (AudioPlayerContainerActivity) child.getContext();
activity.showAudioPlayer();
}
}
@Override
public void onStopNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull V child, @NonNull View target, int type) {
if (lock) return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment