Go back to first page on bottomSheet collapse

This commit is contained in:
CappielloAntonio 2022-01-03 15:09:50 +01:00
parent 7e0081b020
commit 72a471dd6d
4 changed files with 35 additions and 18 deletions

View file

@ -15,13 +15,10 @@ import androidx.navigation.NavController;
import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.NavigationUI; import androidx.navigation.ui.NavigationUI;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.broadcast.receiver.ConnectivityStatusBroadcastReceiver; import com.cappielloantonio.play.broadcast.receiver.ConnectivityStatusBroadcastReceiver;
import com.cappielloantonio.play.databinding.ActivityMainBinding; import com.cappielloantonio.play.databinding.ActivityMainBinding;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaManager;
import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.base.BaseActivity; import com.cappielloantonio.play.ui.activity.base.BaseActivity;
import com.cappielloantonio.play.ui.dialog.ConnectionAlertDialog; import com.cappielloantonio.play.ui.dialog.ConnectionAlertDialog;
import com.cappielloantonio.play.ui.dialog.ServerUnreachableDialog; import com.cappielloantonio.play.ui.dialog.ServerUnreachableDialog;
@ -152,19 +149,10 @@ public class MainActivity extends BaseActivity {
break; break;
case BottomSheetBehavior.STATE_COLLAPSED: case BottomSheetBehavior.STATE_COLLAPSED:
if (playerBottomSheetFragment != null) { if (playerBottomSheetFragment != null) {
// playerBottomSheetFragment.goBackToFirstPage(); playerBottomSheetFragment.goBackToFirstPage();
// playerBottomSheetFragment.scrollOnTop();
} }
case BottomSheetBehavior.STATE_SETTLING: case BottomSheetBehavior.STATE_SETTLING:
if (playerBottomSheetFragment != null) {
// playerBottomSheetFragment.scrollOnTop();
}
break;
case BottomSheetBehavior.STATE_EXPANDED: case BottomSheetBehavior.STATE_EXPANDED:
if (playerBottomSheetFragment != null) {
// playerBottomSheetFragment.scrollOnTop();
// setBottomSheetDraggableState(playerBottomSheetFragment.isViewPagerInFirstPage());
}
case BottomSheetBehavior.STATE_DRAGGING: case BottomSheetBehavior.STATE_DRAGGING:
case BottomSheetBehavior.STATE_HALF_EXPANDED: case BottomSheetBehavior.STATE_HALF_EXPANDED:
break; break;

View file

@ -177,4 +177,12 @@ public class PlayerBottomSheetFragment extends Fragment {
public View getPlayerHeader() { public View getPlayerHeader() {
return requireView().findViewById(R.id.player_header_layout); return requireView().findViewById(R.id.player_header_layout);
} }
public void goBackToFirstPage() {
bind.playerBodyLayout.playerBodyBottomSheetViewPager.setCurrentItem(0, false);
PlayerControllerVerticalPager playerControllerVerticalPager = (PlayerControllerVerticalPager) bind.playerBodyLayout.playerBodyBottomSheetViewPager.getAdapter();
PlayerControllerFragment playerControllerFragment = (PlayerControllerFragment) playerControllerVerticalPager.getRegisteredFragment(0);
playerControllerFragment.goBackToFirstPage();
}
} }

View file

@ -24,11 +24,11 @@ import androidx.navigation.fragment.NavHostFragment;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerHorizontalPager;
import com.cappielloantonio.play.databinding.InnerFragmentPlayerControllerBinding; import com.cappielloantonio.play.databinding.InnerFragmentPlayerControllerBinding;
import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.service.MediaService;
import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.ui.dialog.RatingDialog; import com.cappielloantonio.play.ui.dialog.RatingDialog;
import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerHorizontalPager;
import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
@ -87,6 +87,7 @@ public class PlayerControllerFragment extends Fragment {
bind = null; bind = null;
} }
@SuppressLint("UnsafeOptInUsageError") @SuppressLint("UnsafeOptInUsageError")
private void init() { private void init() {
playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet); playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet);
@ -115,7 +116,7 @@ public class PlayerControllerFragment extends Fragment {
try { try {
MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get(); MediaBrowser mediaBrowser = mediaBrowserListenableFuture.get();
bind.playerControlBodyLayout.setPlayer(mediaBrowser); bind.nowPlayingSongControllerView.setPlayer(mediaBrowser);
setMediaControllerListener(mediaBrowser); setMediaControllerListener(mediaBrowser);
} catch (Exception e) { } catch (Exception e) {
@ -200,4 +201,8 @@ public class PlayerControllerFragment extends Fragment {
activity.collapseBottomSheet(); activity.collapseBottomSheet();
})); }));
} }
public void goBackToFirstPage() {
playerSongCoverViewPager.setCurrentItem(0, false);
}
} }

View file

@ -7,11 +7,17 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.cappielloantonio.play.ui.fragment.PlayerControllerFragment; import com.cappielloantonio.play.ui.fragment.PlayerControllerFragment;
import com.cappielloantonio.play.ui.fragment.PlayerQueueFragment; import com.cappielloantonio.play.ui.fragment.PlayerQueueFragment;
import java.util.HashMap;
public class PlayerControllerVerticalPager extends FragmentStateAdapter { public class PlayerControllerVerticalPager extends FragmentStateAdapter {
private static final String TAG = "PlayerControllerVerticalPager"; private static final String TAG = "PlayerControllerVerticalPager";
private final HashMap<Integer, Fragment> maps;
public PlayerControllerVerticalPager(@NonNull Fragment fragment) { public PlayerControllerVerticalPager(@NonNull Fragment fragment) {
super(fragment); super(fragment);
this.maps = new HashMap<>();
} }
@NonNull @NonNull
@ -19,16 +25,26 @@ public class PlayerControllerVerticalPager extends FragmentStateAdapter {
public Fragment createFragment(int position) { public Fragment createFragment(int position) {
switch (position) { switch (position) {
case 0: case 0:
return new PlayerControllerFragment(); Fragment playerControllerFragment = new PlayerControllerFragment();
maps.put(position, playerControllerFragment);
return playerControllerFragment;
case 1: case 1:
return new PlayerQueueFragment(); Fragment playerQueueFragment = new PlayerQueueFragment();
maps.put(position, playerQueueFragment);
return playerQueueFragment;
} }
return new PlayerControllerFragment(); Fragment playerControllerFragment = new PlayerControllerFragment();
maps.put(position, playerControllerFragment);
return playerControllerFragment;
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return 2; return 2;
} }
public Fragment getRegisteredFragment(int position) {
return maps.get(position);
}
} }