diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java
index 11ef7a9f..db5ca87e 100644
--- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java
+++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java
@@ -19,6 +19,7 @@ import androidx.media3.session.SessionToken;
import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager;
+import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners;
import com.cappielloantonio.tempo.R;
import com.cappielloantonio.tempo.databinding.FragmentPlaylistPageBinding;
import com.cappielloantonio.tempo.glide.CustomGlideRequest;
@@ -160,10 +161,39 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback {
}
private void initBackCover() {
- CustomGlideRequest.Builder
- .from(requireContext(), playlistPageViewModel.getPlaylist().getCoverArtId())
- .build()
- .into(bind.playlistCoverImageView);
+ playlistPageViewModel.getPlaylistSongLiveList().observe(requireActivity(), songs -> {
+ if (bind != null) {
+ Collections.shuffle(songs);
+
+ // Pic top-left
+ CustomGlideRequest.Builder
+ .from(requireContext(), songs.size() > 0 ? songs.get(0).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId())
+ .build()
+ .transform(new GranularRoundedCorners(CustomGlideRequest.CORNER_RADIUS, 0, 0, 0))
+ .into(bind.playlistCoverImageViewTopLeft);
+
+ // Pic top-right
+ CustomGlideRequest.Builder
+ .from(requireContext(), songs.size() > 1 ? songs.get(1).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId())
+ .build()
+ .transform(new GranularRoundedCorners(0, CustomGlideRequest.CORNER_RADIUS, 0, 0))
+ .into(bind.playlistCoverImageViewTopRight);
+
+ // Pic bottom-left
+ CustomGlideRequest.Builder
+ .from(requireContext(), songs.size() > 2 ? songs.get(2).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId())
+ .build()
+ .transform(new GranularRoundedCorners(0, 0, 0, CustomGlideRequest.CORNER_RADIUS))
+ .into(bind.playlistCoverImageViewBottomLeft);
+
+ // Pic bottom-right
+ CustomGlideRequest.Builder
+ .from(requireContext(), songs.size() > 3 ? songs.get(3).getCoverArtId() : playlistPageViewModel.getPlaylist().getCoverArtId())
+ .build()
+ .transform(new GranularRoundedCorners(0, 0, CustomGlideRequest.CORNER_RADIUS, 0))
+ .into(bind.playlistCoverImageViewBottomRight);
+ }
+ });
}
private void initSongsView() {
diff --git a/app/src/main/res/layout/fragment_playlist_page.xml b/app/src/main/res/layout/fragment_playlist_page.xml
index a5d7ab1b..2c57224c 100644
--- a/app/src/main/res/layout/fragment_playlist_page.xml
+++ b/app/src/main/res/layout/fragment_playlist_page.xml
@@ -12,35 +12,67 @@
app:layout_collapseMode="pin"
app:navigationIcon="@drawable/ic_arrow_back" />
-
+ android:layout_height="match_parent">
-
+ android:layout_height="wrap_content">
+ android:background="?attr/colorSurface"
+ app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/playlist_cover_image_view_bottom_left" />
+
-
-
-
+
+
+
\ No newline at end of file