From 42731aef7557e3391622d08842ced2eb3d2af33b Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Thu, 12 Aug 2021 10:37:05 +0200 Subject: [PATCH] Graphic changes to the playlist page --- .idea/misc.xml | 1 + .../cappielloantonio/play/model/Playlist.java | 14 +- .../ui/fragment/PlaylistPageFragment.java | 37 +-- .../main/res/layout/fragment_album_page.xml | 24 +- .../res/layout/fragment_playlist_page.xml | 253 +++++++++++------- 5 files changed, 194 insertions(+), 135 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 311314b1..0de3292c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -28,6 +28,7 @@ + diff --git a/app/src/main/java/com/cappielloantonio/play/model/Playlist.java b/app/src/main/java/com/cappielloantonio/play/model/Playlist.java index 4124950e..221827cb 100644 --- a/app/src/main/java/com/cappielloantonio/play/model/Playlist.java +++ b/app/src/main/java/com/cappielloantonio/play/model/Playlist.java @@ -4,12 +4,12 @@ import android.os.Parcel; import android.os.Parcelable; public class Playlist implements Parcelable { - public String id; - public String name; - public String primary; - public String blurHash; - public int songCount; - public int duration; + private String id; + private String name; + private String primary; + private String blurHash; + private int songCount; + private long duration; public Playlist(com.cappielloantonio.play.subsonic.models.Playlist playlist) { this.id = playlist.getId(); @@ -40,7 +40,7 @@ public class Playlist implements Parcelable { return songCount; } - public int getDuration() { + public long getDuration() { return duration; } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java index ca4036f6..20d62623 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java @@ -16,6 +16,7 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.adapter.SongHorizontalAdapter; @@ -25,6 +26,7 @@ import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.DownloadUtil; +import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.viewmodel.PlaylistPageViewModel; import java.util.Collections; @@ -59,8 +61,8 @@ public class PlaylistPageFragment extends Fragment { init(); initAppBar(); - initBackCover(); initMusicButton(); + initBackCover(); initSongsView(); return view; @@ -97,20 +99,19 @@ public class PlaylistPageFragment extends Fragment { private void initAppBar() { activity.setSupportActionBar(bind.animToolbar); - if (activity.getSupportActionBar() != null) + + if (activity.getSupportActionBar() != null) { activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + activity.getSupportActionBar().setDisplayShowHomeEnabled(true); + } + + bind.animToolbar.setTitle(MusicUtil.getReadableString(playlistPageViewModel.getPlaylist().getName())); + + bind.playlistNameLabel.setText(playlistPageViewModel.getPlaylist().getName()); + bind.playlistSongCountLabel.setText("Song count: " + playlistPageViewModel.getPlaylist().getSongCount()); + bind.playlistDurationLabel.setText("Playlist duration: " + MusicUtil.getReadableDurationString(playlistPageViewModel.getPlaylist().getDuration(), false)); - bind.collapsingToolbar.setTitle(playlistPageViewModel.getPlaylist().getName()); bind.animToolbar.setNavigationOnClickListener(v -> activity.navController.navigateUp()); - bind.collapsingToolbar.setCollapsedTitleTextColor(getResources().getColor(R.color.titleTextColor, null)); - - bind.appbar.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { - if ((bind.collapsingToolbar.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.collapsingToolbar))) { - bind.animToolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.titleTextColor, null), PorterDuff.Mode.SRC_ATOP); - } else { - bind.animToolbar.getNavigationIcon().setColorFilter(getResources().getColor(R.color.white, null), PorterDuff.Mode.SRC_ATOP); - } - }); } private void initMusicButton() { @@ -143,17 +144,19 @@ public class PlaylistPageFragment extends Fragment { private void initBackCover() { CustomGlideRequest.Builder - .from(requireContext(), playlistPageViewModel.getPlaylist().getPrimary(), CustomGlideRequest.ALBUM_PIC, null) + .from(requireContext(), playlistPageViewModel.getPlaylist().getPrimary(), CustomGlideRequest.PLAYLIST_PIC, null) .build() - .into(bind.albumBackCoverImageView); + .transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)) + .into(bind.playlistCoverImageView); } private void initSongsView() { - bind.playlistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); - bind.playlistRecyclerView.setHasFixedSize(true); + bind.songRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + bind.songRecyclerView.setHasFixedSize(true); songHorizontalAdapter = new SongHorizontalAdapter(activity, requireContext(), getChildFragmentManager()); - bind.playlistRecyclerView.setAdapter(songHorizontalAdapter); + bind.songRecyclerView.setAdapter(songHorizontalAdapter); + playlistPageViewModel.getPlaylistSongLiveList().observe(requireActivity(), songs -> { songHorizontalAdapter.setItems(songs); }); diff --git a/app/src/main/res/layout/fragment_album_page.xml b/app/src/main/res/layout/fragment_album_page.xml index d4bb1fdc..7598e484 100644 --- a/app/src/main/res/layout/fragment_album_page.xml +++ b/app/src/main/res/layout/fragment_album_page.xml @@ -34,13 +34,13 @@ android:id="@+id/album_cover_image_view" android:layout_width="0dp" android:layout_height="0dp" - app:layout_constraintDimensionRatio="H,1:1" android:layout_marginLeft="64dp" - android:layout_marginRight="64dp" android:layout_marginTop="8dp" + android:layout_marginRight="64dp" android:layout_marginBottom="8dp" - app:layout_constraintStart_toStartOf="parent" + app:layout_constraintDimensionRatio="H,1:1" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - + android:layout_height="match_parent" + android:orientation="vertical"> - - - - - - - - - - - - + android:layout_height="?attr/actionBarSize" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/ic_arrow_back" + app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light" + app:titleTextColor="@color/titleTextColor" /> + android:layout_height="wrap_content"> + android:orientation="vertical"> - - - + android:clipChildren="false" + android:paddingTop="8dp"> -