Fixed the behavior of the viewpager in the player and (name) refactor

This commit is contained in:
CappielloAntonio 2021-12-22 16:22:01 +01:00
parent 2f5e81fdef
commit b60c5448b2
14 changed files with 82 additions and 38 deletions

View file

@ -102,7 +102,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter<DiscoverSongAdapte
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
SongRepository songRepository = new SongRepository(App.getInstance());

View file

@ -97,7 +97,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener);
mainActivity.isBottomSheetInPeek(true);
mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
SongRepository songRepository = new SongRepository(App.getInstance());

View file

@ -124,7 +124,7 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter<SongHorizontalAd
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
mainActivity.isBottomSheetInPeek(true);
mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);

View file

@ -96,7 +96,7 @@ public class TrackAdapter extends RecyclerView.Adapter<TrackAdapter.ViewHolder>
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
mainActivity.isBottomSheetInPeek(true);
mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);

View file

@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.NavController;
import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.NavigationUI;
import androidx.viewpager2.widget.ViewPager2;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R;
@ -97,10 +98,10 @@ public class MainActivity extends BaseActivity {
/*
* All'apertura mostro il bottom sheet solo se in coda c'è qualcosa
*/
isBottomSheetInPeek(mainViewModel.isQueueLoaded());
setBottomSheetInPeek(mainViewModel.isQueueLoaded());
}
public void isBottomSheetInPeek(Boolean isVisible) {
public void setBottomSheetInPeek(Boolean isVisible) {
if (isVisible) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
} else {
@ -108,6 +109,10 @@ public class MainActivity extends BaseActivity {
}
}
public void setBottomSheetDraggableState(Boolean isDraggable) {
bottomSheetBehavior.setDraggable(isDraggable);
}
private void initNavigation() {
bottomNavigationView = findViewById(R.id.bottom_navigation);
navHostFragment = (NavHostFragment) fragmentManager.findFragmentById(R.id.nav_host_fragment);
@ -150,20 +155,26 @@ public class MainActivity extends BaseActivity {
new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View view, int state) {
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
switch (state) {
case BottomSheetBehavior.STATE_HIDDEN:
MusicPlayerRemote.quitPlaying();
break;
case BottomSheetBehavior.STATE_COLLAPSED:
if (playerBottomSheetFragment != null) {
playerBottomSheetFragment.goBackToFirstPage();
}
case BottomSheetBehavior.STATE_SETTLING:
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
if (playerBottomSheetFragment != null) {
playerBottomSheetFragment.scrollOnTop();
// playerBottomSheetFragment.setPlayerCommandViewVisibility(false);
}
break;
case BottomSheetBehavior.STATE_DRAGGING:
case BottomSheetBehavior.STATE_EXPANDED:
if (playerBottomSheetFragment != null) {
setBottomSheetDraggableState(playerBottomSheetFragment.isViewPagerInFirstPage());
}
case BottomSheetBehavior.STATE_DRAGGING:
case BottomSheetBehavior.STATE_HALF_EXPANDED:
break;
}
@ -219,7 +230,7 @@ public class MainActivity extends BaseActivity {
}
public void goFromLogin() {
isBottomSheetInPeek(mainViewModel.isQueueLoaded());
setBottomSheetInPeek(mainViewModel.isQueueLoaded());
goToHome();
}

View file

@ -138,7 +138,7 @@ public class AlbumPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);
@ -150,7 +150,7 @@ public class AlbumPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);

View file

@ -149,7 +149,7 @@ public class ArtistPageFragment extends Fragment {
queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
} else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();
}
@ -170,7 +170,7 @@ public class ArtistPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true);

View file

@ -126,6 +126,19 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
private void initCoverLyricsSlideView() {
bodyBind.playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
bodyBind.playerSongCoverViewPager.setAdapter(new PlayerNowPlayingSongAdapter(this));
bodyBind.playerSongCoverViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
if (position == 0) {
activity.setBottomSheetDraggableState(true);
} else if (position == 1) {
activity.setBottomSheetDraggableState(false);
}
}
});
}
private void initQueueRecyclerView() {
@ -213,7 +226,13 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
}
private void initMusicCommandUnfoldButton() {
bodyBind.playerCommandUnfoldButton.setOnClickListener(view -> setPlayerCommandViewVisibility(bodyBind.playerCommandCardview.getVisibility() == View.INVISIBLE || bodyBind.playerCommandCardview.getVisibility() == View.GONE));
bodyBind.playerCommandUnfoldButton.setOnClickListener(view -> {
if (bodyBind.playerCommandCardview.getVisibility() == View.INVISIBLE || bodyBind.playerCommandCardview.getVisibility() == View.GONE) {
bodyBind.playerCommandCardview.setVisibility(View.VISIBLE);
} else {
bodyBind.playerCommandCardview.setVisibility(View.GONE);
}
});
}
private void initMusicCommandButton() {
@ -290,14 +309,6 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
bodyBind.buttonFavorite.setChecked(song.isFavorite());
}
public void setPlayerCommandViewVisibility(boolean isVisible) {
if (isVisible) {
bodyBind.playerCommandCardview.setVisibility(View.VISIBLE);
} else {
bodyBind.playerCommandCardview.setVisibility(View.GONE);
}
}
protected void updatePlayPauseState() {
headerBind.playerHeaderButton.setChecked(!MusicPlayerRemote.isPlaying());
bodyBind.playerBigPlayPauseButton.setChecked(!MusicPlayerRemote.isPlaying());
@ -315,6 +326,14 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
bind.playerNestedScrollView.fullScroll(ScrollView.FOCUS_UP);
}
public void goBackToFirstPage() {
bodyBind.playerSongCoverViewPager.setCurrentItem(0);
}
public boolean isViewPagerInFirstPage() {
return bodyBind.playerSongCoverViewPager.getCurrentItem() == 0;
}
@Override
public void onServiceConnected() {
setSongInfo(Objects.requireNonNull(MusicPlayerRemote.getCurrentSong()));

View file

@ -143,7 +143,7 @@ public class PlaylistPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);
@ -155,7 +155,7 @@ public class PlaylistPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);

View file

@ -138,7 +138,7 @@ public class SongListPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true);
activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true);

View file

@ -94,7 +94,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
@ -117,7 +117,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
});
@ -126,7 +126,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
TextView playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> {
MusicPlayerRemote.playNext(songs);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
}));

View file

@ -88,7 +88,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
@ -110,7 +110,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
} else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();
}

View file

@ -99,7 +99,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo(song);
SongRepository songRepository = new SongRepository(App.getInstance());
@ -121,14 +121,14 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> {
MusicPlayerRemote.playNext(song);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
});
TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view);
addToQueue.setOnClickListener(v -> {
MusicPlayerRemote.enqueue(song);
((MainActivity) requireActivity()).isBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet();
});