Changed playlistItem layout in library and Catalogue page

This commit is contained in:
CappielloAntonio 2022-01-13 17:45:16 +01:00
parent 27845b4646
commit 0c891ca727
11 changed files with 369 additions and 282 deletions

View file

@ -12,7 +12,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.PlaylistHorizontalAdapter;
import com.cappielloantonio.play.adapter.PlaylistDialogHorizontalAdapter;
import com.cappielloantonio.play.databinding.DialogPlaylistChooserBinding;
import com.cappielloantonio.play.viewmodel.PlaylistChooserViewModel;
@ -24,7 +24,7 @@ public class PlaylistChooserDialog extends DialogFragment {
private DialogPlaylistChooserBinding bind;
private PlaylistChooserViewModel playlistChooserViewModel;
private PlaylistHorizontalAdapter playlistHorizontalAdapter;
private PlaylistDialogHorizontalAdapter playlistDialogHorizontalAdapter;
@NonNull
@Override
@ -79,15 +79,15 @@ public class PlaylistChooserDialog extends DialogFragment {
bind.playlistDialogRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
bind.playlistDialogRecyclerView.setHasFixedSize(true);
playlistHorizontalAdapter = new PlaylistHorizontalAdapter(requireContext(), playlistChooserViewModel, this);
bind.playlistDialogRecyclerView.setAdapter(playlistHorizontalAdapter);
playlistDialogHorizontalAdapter = new PlaylistDialogHorizontalAdapter(requireContext(), playlistChooserViewModel, this);
bind.playlistDialogRecyclerView.setAdapter(playlistDialogHorizontalAdapter);
playlistChooserViewModel.getPlaylistList().observe(requireActivity(), playlists -> {
if (playlists != null) {
if (playlists.size() > 0) {
if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.GONE);
if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.VISIBLE);
playlistHorizontalAdapter.setItems(playlists);
playlistDialogHorizontalAdapter.setItems(playlists);
} else {
if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.VISIBLE);
if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.GONE);

View file

@ -13,7 +13,6 @@ import androidx.annotation.Nullable;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.session.MediaBrowser;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.PagerSnapHelper;
@ -26,6 +25,9 @@ import com.cappielloantonio.play.adapter.AlbumHorizontalAdapter;
import com.cappielloantonio.play.adapter.ArtistAdapter;
import com.cappielloantonio.play.adapter.GenreAdapter;
import com.cappielloantonio.play.adapter.PlaylistAdapter;
import com.cappielloantonio.play.adapter.PlaylistDialogHorizontalAdapter;
import com.cappielloantonio.play.adapter.PlaylistHorizontalAdapter;
import com.cappielloantonio.play.adapter.SongHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentLibraryBinding;
import com.cappielloantonio.play.helper.recyclerview.CustomLinearSnapHelper;
import com.cappielloantonio.play.helper.recyclerview.DotsIndicatorDecoration;
@ -35,7 +37,6 @@ import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.util.UIUtil;
import com.cappielloantonio.play.viewmodel.LibraryViewModel;
import com.google.android.gms.cast.framework.CastButtonFactory;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Objects;
@ -52,6 +53,8 @@ public class LibraryFragment extends Fragment {
private GenreAdapter genreAdapter;
private PlaylistAdapter playlistAdapter;
private PlaylistHorizontalAdapter playlistHorizontalAdapter;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -254,11 +257,10 @@ public class LibraryFragment extends Fragment {
}
private void initPlaylistSlideView() {
bind.playlistViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
bind.playlistRecyclerView.setHasFixedSize(true);
playlistAdapter = new PlaylistAdapter(activity, requireContext(), false);
bind.playlistViewPager.setAdapter(playlistAdapter);
bind.playlistViewPager.setOffscreenPageLimit(3);
playlistHorizontalAdapter = new PlaylistHorizontalAdapter(activity, requireContext());
bind.playlistRecyclerView.setAdapter(playlistHorizontalAdapter);
libraryViewModel.getPlaylistSample().observe(requireActivity(), playlists -> {
if (playlists == null) {
if (bind != null) bind.libraryPlaylistPlaceholder.placeholder.setVisibility(View.VISIBLE);
@ -266,26 +268,22 @@ public class LibraryFragment extends Fragment {
} else {
if (bind != null) bind.libraryPlaylistPlaceholder.placeholder.setVisibility(View.GONE);
if (bind != null) bind.libraryPlaylistSector.setVisibility(!playlists.isEmpty() ? View.VISIBLE : View.GONE);
if (bind != null) bind.playlistRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(playlists.size(), 5), GridLayoutManager.HORIZONTAL, false));
playlistAdapter.setItems(playlists);
playlistHorizontalAdapter.setItems(playlists);
}
});
setDiscoverSongSlideViewOffset(20, 16);
}
SnapHelper starredTrackSnapHelper = new PagerSnapHelper();
starredTrackSnapHelper.attachToRecyclerView(bind.playlistRecyclerView);
private void setDiscoverSongSlideViewOffset(float pageOffset, float pageMargin) {
bind.playlistViewPager.setPageTransformer((page, position) -> {
float myOffset = position * -(2 * pageOffset + pageMargin);
if (bind.playlistViewPager.getOrientation() == ViewPager2.ORIENTATION_HORIZONTAL) {
if (ViewCompat.getLayoutDirection(bind.playlistViewPager) == ViewCompat.LAYOUT_DIRECTION_RTL) {
page.setTranslationX(-myOffset);
} else {
page.setTranslationX(myOffset);
}
} else {
page.setTranslationY(myOffset);
}
});
bind.playlistRecyclerView.addItemDecoration(
new DotsIndicatorDecoration(
getResources().getDimensionPixelSize(R.dimen.radius),
getResources().getDimensionPixelSize(R.dimen.radius) * 4,
getResources().getDimensionPixelSize(R.dimen.dots_height),
requireContext().getResources().getColor(R.color.titleTextColor, null),
requireContext().getResources().getColor(R.color.titleTextColor, null))
);
}
}

View file

@ -21,7 +21,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.cappielloantonio.play.R;
import com.cappielloantonio.play.adapter.PlaylistCatalogueAdapter;
import com.cappielloantonio.play.adapter.PlaylistHorizontalAdapter;
import com.cappielloantonio.play.databinding.FragmentPlaylistCatalogueBinding;
import com.cappielloantonio.play.model.Playlist;
import com.cappielloantonio.play.ui.activity.MainActivity;
@ -37,7 +37,7 @@ public class PlaylistCatalogueFragment extends Fragment {
private MainActivity activity;
private PlaylistCatalogueViewModel playlistCatalogueViewModel;
private PlaylistCatalogueAdapter playlistCatalogueAdapter;
private PlaylistHorizontalAdapter playlistHorizontalAdapter;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@ -108,10 +108,10 @@ public class PlaylistCatalogueFragment extends Fragment {
bind.playlistCatalogueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
bind.playlistCatalogueRecyclerView.setHasFixedSize(true);
playlistCatalogueAdapter = new PlaylistCatalogueAdapter(activity, requireContext(), playlistCatalogueViewModel.getType().equals(Playlist.DOWNLOADED));
bind.playlistCatalogueRecyclerView.setAdapter(playlistCatalogueAdapter);
playlistHorizontalAdapter = new PlaylistHorizontalAdapter(activity, requireContext());
bind.playlistCatalogueRecyclerView.setAdapter(playlistHorizontalAdapter);
if(getActivity() != null) {
if (getActivity() != null) {
playlistCatalogueViewModel.getPlaylistList(requireActivity()).observe(requireActivity(), playlists ->
playlistCatalogueViewModel.getPinnedPlaylistList(requireActivity()).observe(requireActivity(),
pinnedPlaylists -> {
@ -135,7 +135,7 @@ public class PlaylistCatalogueFragment extends Fragment {
sortedList.addAll(unsortedList);
}
playlistCatalogueAdapter.setItems(sortedList);
playlistHorizontalAdapter.setItems(sortedList);
playlistCatalogueViewModel.unpinPlaylist(pinnedPlaylistsNotFound);
}));
}
@ -163,7 +163,7 @@ public class PlaylistCatalogueFragment extends Fragment {
@Override
public boolean onQueryTextChange(String newText) {
playlistCatalogueAdapter.getFilter().filter(newText);
playlistHorizontalAdapter.getFilter().filter(newText);
return false;
}
});