mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-02 02:13:33 +00:00
Add placeholder lists in home and library
This commit is contained in:
parent
501a7af61e
commit
5bec2e610e
17 changed files with 1021 additions and 114 deletions
117
.idea/codeStyles/Project.xml
generated
Normal file
117
.idea/codeStyles/Project.xml
generated
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<codeStyleSettings language="XML">
|
||||||
|
<option name="FORCE_REARRANGE_MODE" value="1" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
</indentOptions>
|
||||||
|
<arrangement>
|
||||||
|
<rules>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:android</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:id</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>style</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
</rules>
|
||||||
|
</arrangement>
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
13
.idea/misc.xml
generated
13
.idea/misc.xml
generated
|
|
@ -33,13 +33,26 @@
|
||||||
<entry key="app/src/main/res/layout/fragment_player_bottom_sheet.xml" value="0.3166496424923391" />
|
<entry key="app/src/main/res/layout/fragment_player_bottom_sheet.xml" value="0.3166496424923391" />
|
||||||
<entry key="app/src/main/res/layout/fragment_playlist_catalogue.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/fragment_playlist_catalogue.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/fragment_playlist_page.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/fragment_playlist_page.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_home_album_placeholder.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/item_home_discover_song.xml" value="0.3166496424923391" />
|
<entry key="app/src/main/res/layout/item_home_discover_song.xml" value="0.3166496424923391" />
|
||||||
|
<entry key="app/src/main/res/layout/item_home_discovery_placeholder.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_home_horizontal_placeholder.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_home_placeholder.xml" value="0.47191011235955055" />
|
||||||
|
<entry key="app/src/main/res/layout/item_home_track.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_home_year.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_home_year_placeholder.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/item_horizontal_album.xml" value="0.3166496424923391" />
|
<entry key="app/src/main/res/layout/item_horizontal_album.xml" value="0.3166496424923391" />
|
||||||
<entry key="app/src/main/res/layout/item_horizontal_playlist.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/item_horizontal_playlist.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/item_horizontal_playlist_dialog_track.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/item_horizontal_track.xml" value="4.0" />
|
<entry key="app/src/main/res/layout/item_horizontal_track.xml" value="4.0" />
|
||||||
<entry key="app/src/main/res/layout/item_library_album.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/item_library_album.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_library_genre.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/item_login_server.xml" value="0.25" />
|
<entry key="app/src/main/res/layout/item_login_server.xml" value="0.25" />
|
||||||
|
<entry key="app/src/main/res/layout/item_placehoder_discovery.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_placeholder_album.xml" value="0.1" />
|
||||||
|
<entry key="app/src/main/res/layout/item_placeholder_genre.xml" value="0.1" />
|
||||||
|
<entry key="app/src/main/res/layout/item_placeholder_horizontal.xml" value="0.3229166666666667" />
|
||||||
|
<entry key="app/src/main/res/layout/item_placeholder_year.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/item_player_now_playing_song.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/item_player_now_playing_song.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/item_player_queue_song.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/item_player_queue_song.xml" value="0.3229166666666667" />
|
||||||
<entry key="app/src/main/res/layout/player_body_bottom_sheet.xml" value="0.3229166666666667" />
|
<entry key="app/src/main/res/layout/player_body_bottom_sheet.xml" value="0.3229166666666667" />
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.cappielloantonio.play.ui.fragment;
|
package com.cappielloantonio.play.ui.fragment;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
@ -182,7 +181,15 @@ public class HomeFragment extends Fragment {
|
||||||
bind.discoverSongViewPager.setAdapter(discoverSongAdapter);
|
bind.discoverSongViewPager.setAdapter(discoverSongAdapter);
|
||||||
bind.discoverSongViewPager.setOffscreenPageLimit(3);
|
bind.discoverSongViewPager.setOffscreenPageLimit(3);
|
||||||
homeViewModel.getDiscoverSongSample().observe(requireActivity(), songs -> {
|
homeViewModel.getDiscoverSongSample().observe(requireActivity(), songs -> {
|
||||||
|
if (songs == null) {
|
||||||
|
if (bind != null) bind.homeDiscoveryPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.homeDiscoverSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.homeDiscoveryPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeDiscoverSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
discoverSongAdapter.setItems(songs);
|
discoverSongAdapter.setItems(songs);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
setDiscoverSongSlideViewOffset(20, 16);
|
setDiscoverSongSlideViewOffset(20, 16);
|
||||||
|
|
@ -194,12 +201,17 @@ public class HomeFragment extends Fragment {
|
||||||
|
|
||||||
mostPlayedAlbumAdapter = new AlbumAdapter(requireContext());
|
mostPlayedAlbumAdapter = new AlbumAdapter(requireContext());
|
||||||
bind.mostPlayedAlbumsRecyclerView.setAdapter(mostPlayedAlbumAdapter);
|
bind.mostPlayedAlbumsRecyclerView.setAdapter(mostPlayedAlbumAdapter);
|
||||||
homeViewModel.getMostPlayedAlbums().observe(requireActivity(), albums -> {
|
homeViewModel.getMostPlayedAlbums(requireActivity()).observe(requireActivity(), albums -> {
|
||||||
|
if (albums == null) {
|
||||||
|
if (bind != null) bind.homeMostPlayedAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.homeMostPlayedAlbumsSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.homeMostPlayedAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeMostPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
if (albums.size() < 10) reorder();
|
if (albums.size() < 10) reorder();
|
||||||
if (bind != null)
|
|
||||||
bind.homeMostPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
|
||||||
|
|
||||||
mostPlayedAlbumAdapter.setItems(albums);
|
mostPlayedAlbumAdapter.setItems(albums);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper mostPlayedAlbumSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper mostPlayedAlbumSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
@ -212,11 +224,16 @@ public class HomeFragment extends Fragment {
|
||||||
|
|
||||||
recentlyPlayedAlbumAdapter = new AlbumAdapter(requireContext());
|
recentlyPlayedAlbumAdapter = new AlbumAdapter(requireContext());
|
||||||
bind.recentlyPlayedAlbumsRecyclerView.setAdapter(recentlyPlayedAlbumAdapter);
|
bind.recentlyPlayedAlbumsRecyclerView.setAdapter(recentlyPlayedAlbumAdapter);
|
||||||
homeViewModel.getRecentlyPlayedAlbumList().observe(requireActivity(), albums -> {
|
homeViewModel.getRecentlyPlayedAlbumList(requireActivity()).observe(requireActivity(), albums -> {
|
||||||
if (bind != null)
|
if (albums == null) {
|
||||||
bind.homeRecentlyPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.homeRecentlyPlayedAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.homeRecentlyPlayedAlbumsSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.homeRecentlyPlayedAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeRecentlyPlayedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
recentlyPlayedAlbumAdapter.setItems(albums);
|
recentlyPlayedAlbumAdapter.setItems(albums);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper recentPlayedAlbumSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper recentPlayedAlbumSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
@ -235,11 +252,16 @@ public class HomeFragment extends Fragment {
|
||||||
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
|
||||||
});
|
});
|
||||||
bind.yearsRecyclerView.setAdapter(yearAdapter);
|
bind.yearsRecyclerView.setAdapter(yearAdapter);
|
||||||
homeViewModel.getYearList().observe(requireActivity(), years -> {
|
homeViewModel.getYearList(requireActivity()).observe(requireActivity(), years -> {
|
||||||
if (bind != null)
|
if (years == null) {
|
||||||
bind.homeFlashbackSector.setVisibility(!years.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.homeFlashbackPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.homeFlashbackSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.homeFlashbackPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeFlashbackSector.setVisibility(!years.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
yearAdapter.setItems(years);
|
yearAdapter.setItems(years);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper yearSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper yearSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
@ -251,12 +273,17 @@ public class HomeFragment extends Fragment {
|
||||||
|
|
||||||
starredSongAdapter = new SongHorizontalAdapter(activity, requireContext());
|
starredSongAdapter = new SongHorizontalAdapter(activity, requireContext());
|
||||||
bind.starredTracksRecyclerView.setAdapter(starredSongAdapter);
|
bind.starredTracksRecyclerView.setAdapter(starredSongAdapter);
|
||||||
homeViewModel.getStarredTracks().observe(requireActivity(), songs -> {
|
homeViewModel.getStarredTracks(requireActivity()).observe(requireActivity(), songs -> {
|
||||||
if (bind != null) {
|
if (songs == null) {
|
||||||
bind.homeStarredTracksSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.homeStarredTracksPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
bind.starredTracksRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(songs.size(), 5), GridLayoutManager.HORIZONTAL, false));
|
if (bind != null) bind.homeStarredTracksSector.setVisibility(View.GONE);
|
||||||
}
|
} else {
|
||||||
|
if (bind != null) bind.homeStarredTracksPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeStarredTracksSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
if (bind != null) bind.starredTracksRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(songs.size(), 5), GridLayoutManager.HORIZONTAL, false));
|
||||||
|
|
||||||
starredSongAdapter.setItems(songs);
|
starredSongAdapter.setItems(songs);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
SnapHelper starredTrackSnapHelper = new PagerSnapHelper();
|
SnapHelper starredTrackSnapHelper = new PagerSnapHelper();
|
||||||
|
|
@ -268,12 +295,17 @@ public class HomeFragment extends Fragment {
|
||||||
|
|
||||||
starredAlbumAdapter = new AlbumHorizontalAdapter(requireContext());
|
starredAlbumAdapter = new AlbumHorizontalAdapter(requireContext());
|
||||||
bind.starredAlbumsRecyclerView.setAdapter(starredAlbumAdapter);
|
bind.starredAlbumsRecyclerView.setAdapter(starredAlbumAdapter);
|
||||||
homeViewModel.getStarredAlbums().observe(requireActivity(), albums -> {
|
homeViewModel.getStarredAlbums(requireActivity()).observe(requireActivity(), albums -> {
|
||||||
if (bind != null) {
|
if (albums == null) {
|
||||||
bind.homeStarredAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.homeStarredAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
bind.starredAlbumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false));
|
if (bind != null) bind.homeStarredAlbumsSector.setVisibility(View.GONE);
|
||||||
}
|
} else {
|
||||||
|
if (bind != null) bind.homeStarredAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeStarredAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
if (bind != null) bind.starredAlbumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(albums.size(), 5), GridLayoutManager.HORIZONTAL, false));
|
||||||
|
|
||||||
starredAlbumAdapter.setItems(albums);
|
starredAlbumAdapter.setItems(albums);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
SnapHelper starredAlbumSnapHelper = new PagerSnapHelper();
|
SnapHelper starredAlbumSnapHelper = new PagerSnapHelper();
|
||||||
|
|
@ -285,12 +317,17 @@ public class HomeFragment extends Fragment {
|
||||||
|
|
||||||
starredArtistAdapter = new ArtistHorizontalAdapter(requireContext());
|
starredArtistAdapter = new ArtistHorizontalAdapter(requireContext());
|
||||||
bind.starredArtistsRecyclerView.setAdapter(starredArtistAdapter);
|
bind.starredArtistsRecyclerView.setAdapter(starredArtistAdapter);
|
||||||
homeViewModel.getStarredArtists().observe(requireActivity(), artists -> {
|
homeViewModel.getStarredArtists(requireActivity()).observe(requireActivity(), artists -> {
|
||||||
if (bind != null) {
|
if (artists == null) {
|
||||||
bind.homeStarredArtistsSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.homeStarredArtistsPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
bind.starredArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(artists.size(), 5), GridLayoutManager.HORIZONTAL, false));
|
if (bind != null) bind.homeStarredArtistsSector.setVisibility(View.GONE);
|
||||||
}
|
} else {
|
||||||
|
if (bind != null) bind.homeStarredArtistsPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeStarredArtistsSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
if (bind != null) bind.starredArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), UIUtil.getSpanCount(artists.size(), 5), GridLayoutManager.HORIZONTAL, false));
|
||||||
|
|
||||||
starredArtistAdapter.setItems(artists);
|
starredArtistAdapter.setItems(artists);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
SnapHelper starredArtistSnapHelper = new PagerSnapHelper();
|
SnapHelper starredArtistSnapHelper = new PagerSnapHelper();
|
||||||
|
|
@ -303,8 +340,16 @@ public class HomeFragment extends Fragment {
|
||||||
|
|
||||||
recentlyAddedAlbumAdapter = new AlbumAdapter(requireContext());
|
recentlyAddedAlbumAdapter = new AlbumAdapter(requireContext());
|
||||||
bind.recentlyAddedAlbumsRecyclerView.setAdapter(recentlyAddedAlbumAdapter);
|
bind.recentlyAddedAlbumsRecyclerView.setAdapter(recentlyAddedAlbumAdapter);
|
||||||
homeViewModel.getMostRecentlyAddedAlbums().observe(requireActivity(), albums -> {
|
homeViewModel.getMostRecentlyAddedAlbums(requireActivity()).observe(requireActivity(), albums -> {
|
||||||
|
if (albums == null) {
|
||||||
|
if (bind != null) bind.homeRecentlyAddedAlbumsPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.homeRecentlyAddedAlbumsSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.homeRecentlyAddedAlbumsPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeRecentlyAddedAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
recentlyAddedAlbumAdapter.setItems(albums);
|
recentlyAddedAlbumAdapter.setItems(albums);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper recentAddedAlbumSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper recentAddedAlbumSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
@ -317,11 +362,16 @@ public class HomeFragment extends Fragment {
|
||||||
|
|
||||||
dowanloadedMusicAdapter = new RecentMusicAdapter(activity, requireContext());
|
dowanloadedMusicAdapter = new RecentMusicAdapter(activity, requireContext());
|
||||||
bind.downloadedTracksRecyclerView.setAdapter(dowanloadedMusicAdapter);
|
bind.downloadedTracksRecyclerView.setAdapter(dowanloadedMusicAdapter);
|
||||||
homeViewModel.getDownloaded().observe(requireActivity(), downloads -> {
|
homeViewModel.getDownloaded(requireActivity()).observe(requireActivity(), downloads -> {
|
||||||
if (bind != null)
|
if (downloads == null) {
|
||||||
bind.homeDownloadedTracksSector.setVisibility(!downloads.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.homeDownloadedTracksPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.homeDownloadedTracksSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.homeDownloadedTracksPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.homeDownloadedTracksSector.setVisibility(!downloads.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
dowanloadedMusicAdapter.setItems(MappingUtil.mapDownload(downloads));
|
dowanloadedMusicAdapter.setItems(MappingUtil.mapDownload(downloads));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper downloadedSongSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper downloadedSongSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
|
||||||
|
|
@ -104,9 +104,15 @@ public class LibraryFragment extends Fragment {
|
||||||
albumAdapter = new AlbumAdapter(requireContext());
|
albumAdapter = new AlbumAdapter(requireContext());
|
||||||
bind.albumRecyclerView.setAdapter(albumAdapter);
|
bind.albumRecyclerView.setAdapter(albumAdapter);
|
||||||
libraryViewModel.getAlbumSample().observe(requireActivity(), albums -> {
|
libraryViewModel.getAlbumSample().observe(requireActivity(), albums -> {
|
||||||
if (bind != null)
|
if (albums == null) {
|
||||||
bind.libraryAlbumSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.libraryAlbumPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.libraryAlbumSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.libraryAlbumPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.libraryAlbumSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
albumAdapter.setItems(albums);
|
albumAdapter.setItems(albums);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper albumSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper albumSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
@ -120,9 +126,15 @@ public class LibraryFragment extends Fragment {
|
||||||
artistAdapter = new ArtistAdapter(requireContext());
|
artistAdapter = new ArtistAdapter(requireContext());
|
||||||
bind.artistRecyclerView.setAdapter(artistAdapter);
|
bind.artistRecyclerView.setAdapter(artistAdapter);
|
||||||
libraryViewModel.getArtistSample().observe(requireActivity(), artists -> {
|
libraryViewModel.getArtistSample().observe(requireActivity(), artists -> {
|
||||||
if (bind != null)
|
if (artists == null) {
|
||||||
bind.libraryArtistSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.libraryArtistPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.libraryArtistSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.libraryArtistPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.libraryArtistSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
artistAdapter.setItems(artists);
|
artistAdapter.setItems(artists);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper artistSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper artistSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
@ -142,9 +154,15 @@ public class LibraryFragment extends Fragment {
|
||||||
});
|
});
|
||||||
bind.genreRecyclerView.setAdapter(genreAdapter);
|
bind.genreRecyclerView.setAdapter(genreAdapter);
|
||||||
libraryViewModel.getGenreSample().observe(requireActivity(), genres -> {
|
libraryViewModel.getGenreSample().observe(requireActivity(), genres -> {
|
||||||
if (bind != null)
|
if (genres == null) {
|
||||||
bind.libraryGenresSector.setVisibility(!genres.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.libraryGenrePlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.libraryGenresSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.libraryGenrePlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.libraryGenresSector.setVisibility(!genres.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
genreAdapter.setItems(genres);
|
genreAdapter.setItems(genres);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomLinearSnapHelper genreSnapHelper = new CustomLinearSnapHelper();
|
CustomLinearSnapHelper genreSnapHelper = new CustomLinearSnapHelper();
|
||||||
|
|
@ -158,9 +176,15 @@ public class LibraryFragment extends Fragment {
|
||||||
bind.playlistViewPager.setAdapter(playlistAdapter);
|
bind.playlistViewPager.setAdapter(playlistAdapter);
|
||||||
bind.playlistViewPager.setOffscreenPageLimit(3);
|
bind.playlistViewPager.setOffscreenPageLimit(3);
|
||||||
libraryViewModel.getPlaylistSample().observe(requireActivity(), playlists -> {
|
libraryViewModel.getPlaylistSample().observe(requireActivity(), playlists -> {
|
||||||
if (bind != null)
|
if (playlists == null) {
|
||||||
bind.libraryPlaylistSector.setVisibility(!playlists.isEmpty() ? View.VISIBLE : View.GONE);
|
if (bind != null) bind.libraryPlaylistPlaceholder.placeholder.setVisibility(View.VISIBLE);
|
||||||
|
if (bind != null) bind.libraryPlaylistSector.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
if (bind != null) bind.libraryPlaylistPlaceholder.placeholder.setVisibility(View.GONE);
|
||||||
|
if (bind != null) bind.libraryPlaylistSector.setVisibility(!playlists.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
playlistAdapter.setItems(playlists);
|
playlistAdapter.setItems(playlists);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
setDiscoverSongSlideViewOffset(20, 16);
|
setDiscoverSongSlideViewOffset(20, 16);
|
||||||
|
|
|
||||||
|
|
@ -21,21 +21,21 @@ import java.util.List;
|
||||||
|
|
||||||
public class HomeViewModel extends AndroidViewModel {
|
public class HomeViewModel extends AndroidViewModel {
|
||||||
private static final String TAG = "HomeViewModel";
|
private static final String TAG = "HomeViewModel";
|
||||||
private SongRepository songRepository;
|
|
||||||
private AlbumRepository albumRepository;
|
|
||||||
private ArtistRepository artistRepository;
|
|
||||||
private DownloadRepository downloadRepository;
|
|
||||||
|
|
||||||
private MutableLiveData<List<Song>> dicoverSongSample;
|
private final SongRepository songRepository;
|
||||||
private MutableLiveData<List<Album>> mostPlayedAlbumSample;
|
private final AlbumRepository albumRepository;
|
||||||
private MutableLiveData<List<Album>> recentlyAddedAlbumSample;
|
private final ArtistRepository artistRepository;
|
||||||
private MutableLiveData<List<Album>> recentlyPlayedAlbumSample;
|
private final DownloadRepository downloadRepository;
|
||||||
private LiveData<List<Download>> downloadedSongSample;
|
|
||||||
private LiveData<List<Integer>> years;
|
|
||||||
|
|
||||||
private MutableLiveData<List<Song>> starredTracks;
|
private final MutableLiveData<List<Song>> dicoverSongSample = new MutableLiveData<>(null);
|
||||||
private MutableLiveData<List<Album>> starredAlbums;
|
private final MutableLiveData<List<Album>> mostPlayedAlbumSample = new MutableLiveData<>(null);
|
||||||
private MutableLiveData<List<Artist>> starredArtists;
|
private final MutableLiveData<List<Album>> recentlyPlayedAlbumSample = new MutableLiveData<>(null);
|
||||||
|
private final MutableLiveData<List<Integer>> years = new MutableLiveData<>(null);
|
||||||
|
private final MutableLiveData<List<Song>> starredTracks = new MutableLiveData<>(null);
|
||||||
|
private final MutableLiveData<List<Album>> starredAlbums = new MutableLiveData<>(null);
|
||||||
|
private final MutableLiveData<List<Artist>> starredArtists = new MutableLiveData<>(null);
|
||||||
|
private final MutableLiveData<List<Download>> downloadedSongSample = new MutableLiveData<>(null);
|
||||||
|
private final MutableLiveData<List<Album>> recentlyAddedAlbumSample = new MutableLiveData<>(null);
|
||||||
|
|
||||||
public HomeViewModel(@NonNull Application application) {
|
public HomeViewModel(@NonNull Application application) {
|
||||||
super(application);
|
super(application);
|
||||||
|
|
@ -45,83 +45,78 @@ public class HomeViewModel extends AndroidViewModel {
|
||||||
artistRepository = new ArtistRepository(application);
|
artistRepository = new ArtistRepository(application);
|
||||||
downloadRepository = new DownloadRepository(application);
|
downloadRepository = new DownloadRepository(application);
|
||||||
|
|
||||||
dicoverSongSample = songRepository.getRandomSample(10, null, null);
|
songRepository.getRandomSample(10, null, null).observeForever(dicoverSongSample::postValue);
|
||||||
mostPlayedAlbumSample = albumRepository.getAlbums("frequent", 20);
|
|
||||||
recentlyAddedAlbumSample = albumRepository.getAlbums("newest", 20);
|
|
||||||
recentlyPlayedAlbumSample = albumRepository.getAlbums("recent", 20);
|
|
||||||
downloadedSongSample = downloadRepository.getLiveDownloadSample(10);
|
|
||||||
years = albumRepository.getDecades();
|
|
||||||
|
|
||||||
starredTracks = songRepository.getStarredSongs();
|
|
||||||
starredAlbums = albumRepository.getStarredAlbums();
|
|
||||||
starredArtists = artistRepository.getStarredArtists();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SongRepository getSongRepository() {
|
|
||||||
return songRepository;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Song>> getDiscoverSongSample() {
|
public LiveData<List<Song>> getDiscoverSongSample() {
|
||||||
return dicoverSongSample;
|
return dicoverSongSample;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Integer>> getYearList() {
|
public LiveData<List<Integer>> getYearList(LifecycleOwner owner) {
|
||||||
|
albumRepository.getDecades().observe(owner, years::postValue);
|
||||||
return years;
|
return years;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Song>> getStarredTracks() {
|
public LiveData<List<Song>> getStarredTracks(LifecycleOwner owner) {
|
||||||
|
songRepository.getStarredSongs().observe(owner, starredTracks::postValue);
|
||||||
return starredTracks;
|
return starredTracks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Album>> getStarredAlbums() {
|
public LiveData<List<Album>> getStarredAlbums(LifecycleOwner owner) {
|
||||||
|
albumRepository.getStarredAlbums().observe(owner, starredAlbums::postValue);
|
||||||
return starredAlbums;
|
return starredAlbums;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Artist>> getStarredArtists() {
|
public LiveData<List<Artist>> getStarredArtists(LifecycleOwner owner) {
|
||||||
|
artistRepository.getStarredArtists().observe(owner, starredArtists::postValue);
|
||||||
return starredArtists;
|
return starredArtists;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Download>> getDownloaded() {
|
public LiveData<List<Download>> getDownloaded(LifecycleOwner owner) {
|
||||||
|
downloadRepository.getLiveDownloadSample(10).observe(owner, downloadedSongSample::postValue);
|
||||||
return downloadedSongSample;
|
return downloadedSongSample;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Album>> getMostPlayedAlbums() {
|
public LiveData<List<Album>> getMostPlayedAlbums(LifecycleOwner owner) {
|
||||||
|
albumRepository.getAlbums("frequent", 20).observe(owner, mostPlayedAlbumSample::postValue);
|
||||||
return mostPlayedAlbumSample;
|
return mostPlayedAlbumSample;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Album>> getMostRecentlyAddedAlbums() {
|
public LiveData<List<Album>> getMostRecentlyAddedAlbums(LifecycleOwner owner) {
|
||||||
|
albumRepository.getAlbums("newest", 20).observe(owner, recentlyAddedAlbumSample::postValue);
|
||||||
return recentlyAddedAlbumSample;
|
return recentlyAddedAlbumSample;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Album>> getRecentlyPlayedAlbumList() {
|
public LiveData<List<Album>> getRecentlyPlayedAlbumList(LifecycleOwner owner) {
|
||||||
|
albumRepository.getAlbums("recent", 20).observe(owner, recentlyPlayedAlbumSample::postValue);
|
||||||
return recentlyPlayedAlbumSample;
|
return recentlyPlayedAlbumSample;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshDiscoverySongSample(LifecycleOwner owner) {
|
public void refreshDiscoverySongSample(LifecycleOwner owner) {
|
||||||
songRepository.getRandomSample(10, null, null).observe(owner, songs -> dicoverSongSample.postValue(songs));
|
songRepository.getRandomSample(10, null, null).observe(owner, dicoverSongSample::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshStarredTracks(LifecycleOwner owner) {
|
public void refreshStarredTracks(LifecycleOwner owner) {
|
||||||
songRepository.getStarredSongs().observe(owner, songs -> starredTracks.postValue(songs));
|
songRepository.getStarredSongs().observe(owner, starredTracks::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshStarredAlbums(LifecycleOwner owner) {
|
public void refreshStarredAlbums(LifecycleOwner owner) {
|
||||||
albumRepository.getStarredAlbums().observe(owner, albums -> starredAlbums.postValue(albums));
|
albumRepository.getStarredAlbums().observe(owner, starredAlbums::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshStarredArtists(LifecycleOwner owner) {
|
public void refreshStarredArtists(LifecycleOwner owner) {
|
||||||
artistRepository.getStarredArtists().observe(owner, artists -> starredArtists.postValue(artists));
|
artistRepository.getStarredArtists().observe(owner, starredArtists::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshMostPlayedAlbums(LifecycleOwner owner) {
|
public void refreshMostPlayedAlbums(LifecycleOwner owner) {
|
||||||
albumRepository.getAlbums("frequent", 20).observe(owner, albums -> mostPlayedAlbumSample.postValue(albums));
|
albumRepository.getAlbums("frequent", 20).observe(owner, mostPlayedAlbumSample::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshMostRecentlyAddedAlbums(LifecycleOwner owner) {
|
public void refreshMostRecentlyAddedAlbums(LifecycleOwner owner) {
|
||||||
albumRepository.getAlbums("newest", 20).observe(owner, albums -> recentlyAddedAlbumSample.postValue(albums));
|
albumRepository.getAlbums("newest", 20).observe(owner, recentlyAddedAlbumSample::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshRecentlyPlayedAlbumList(LifecycleOwner owner) {
|
public void refreshRecentlyPlayedAlbumList(LifecycleOwner owner) {
|
||||||
albumRepository.getAlbums("recent", 20).observe(owner, albums -> recentlyPlayedAlbumSample.postValue(albums));
|
albumRepository.getAlbums("recent", 20).observe(owner, recentlyPlayedAlbumSample::postValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,15 +20,15 @@ import com.cappielloantonio.play.repository.PlaylistRepository;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class LibraryViewModel extends AndroidViewModel {
|
public class LibraryViewModel extends AndroidViewModel {
|
||||||
private AlbumRepository albumRepository;
|
private final AlbumRepository albumRepository;
|
||||||
private ArtistRepository artistRepository;
|
private final ArtistRepository artistRepository;
|
||||||
private GenreRepository genreRepository;
|
private final GenreRepository genreRepository;
|
||||||
private PlaylistRepository playlistRepository;
|
private final PlaylistRepository playlistRepository;
|
||||||
|
|
||||||
private MutableLiveData<List<Playlist>> playlistSample;
|
private final MutableLiveData<List<Playlist>> playlistSample = new MutableLiveData<>(null);
|
||||||
private MutableLiveData<List<Album>> sampleAlbum;
|
private final MutableLiveData<List<Album>> sampleAlbum = new MutableLiveData<>(null);
|
||||||
private MutableLiveData<List<Artist>> sampleArtist;
|
private final MutableLiveData<List<Artist>> sampleArtist = new MutableLiveData<>(null);
|
||||||
private MutableLiveData<List<Genre>> sampleGenres;
|
private final MutableLiveData<List<Genre>> sampleGenres = new MutableLiveData<>(null);
|
||||||
|
|
||||||
public LibraryViewModel(@NonNull Application application) {
|
public LibraryViewModel(@NonNull Application application) {
|
||||||
super(application);
|
super(application);
|
||||||
|
|
@ -40,10 +40,10 @@ public class LibraryViewModel extends AndroidViewModel {
|
||||||
|
|
||||||
// Inizializzate all'interno del costruttore, in modo da rimanere immutabili per tutto il
|
// Inizializzate all'interno del costruttore, in modo da rimanere immutabili per tutto il
|
||||||
// ciclo di vita dell'applicazione
|
// ciclo di vita dell'applicazione
|
||||||
sampleAlbum = albumRepository.getAlbums("random", 20);
|
albumRepository.getAlbums("random", 20).observeForever(sampleAlbum::postValue);
|
||||||
sampleArtist = artistRepository.getArtists(true, 20);
|
artistRepository.getArtists(true, 20).observeForever(sampleArtist::postValue);
|
||||||
sampleGenres = genreRepository.getGenres(true, 15);
|
genreRepository.getGenres(true, 15).observeForever(sampleGenres::postValue);
|
||||||
playlistSample = playlistRepository.getPlaylists(true, 10);
|
playlistRepository.getPlaylists(true, 10).observeForever(playlistSample::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<Album>> getAlbumSample() {
|
public LiveData<List<Album>> getAlbumSample() {
|
||||||
|
|
@ -63,18 +63,18 @@ public class LibraryViewModel extends AndroidViewModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshAlbumSample(LifecycleOwner owner) {
|
public void refreshAlbumSample(LifecycleOwner owner) {
|
||||||
albumRepository.getAlbums("random", 20).observe(owner, albums -> sampleAlbum.postValue(albums));
|
albumRepository.getAlbums("random", 20).observe(owner, sampleAlbum::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshArtistSample(LifecycleOwner owner) {
|
public void refreshArtistSample(LifecycleOwner owner) {
|
||||||
artistRepository.getArtists(true, 20).observe(owner, artists -> sampleArtist.postValue(artists));
|
artistRepository.getArtists(true, 20).observe(owner, sampleArtist::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshGenreSample(LifecycleOwner owner) {
|
public void refreshGenreSample(LifecycleOwner owner) {
|
||||||
genreRepository.getGenres(true, 15).observe(owner, genres -> sampleGenres.postValue(genres));
|
genreRepository.getGenres(true, 15).observe(owner, sampleGenres::postValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshPlaylistSample(LifecycleOwner owner) {
|
public void refreshPlaylistSample(LifecycleOwner owner) {
|
||||||
playlistRepository.getPlaylists(true, 10).observe(owner, playlists -> playlistSample.postValue(playlists));
|
playlistRepository.getPlaylists(true, 10).observe(owner, playlistSample::postValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@
|
||||||
android:stepSize="1"
|
android:stepSize="1"
|
||||||
android:numStars="5"
|
android:numStars="5"
|
||||||
android:rating="0"
|
android:rating="0"
|
||||||
android:progressTint="@color/startTintColor"
|
android:progressTint="@color/starTintColor"
|
||||||
android:progressBackgroundTint="@color/startBackgroundTintColor"
|
android:progressBackgroundTint="@color/starBackgroundTintColor"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"/>
|
app:layout_constraintTop_toTopOf="parent"/>
|
||||||
|
|
|
||||||
|
|
@ -66,12 +66,18 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_discovery_placeholder"
|
||||||
|
layout="@layout/item_placehoder_discovery"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<!-- Most played albums -->
|
<!-- Most played albums -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_most_played_albums_sector"
|
android:id="@+id/home_most_played_albums_sector"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
<!-- Label and button -->
|
<!-- Label and button -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|
@ -119,6 +125,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_most_played_albums_placeholder"
|
||||||
|
layout="@layout/item_placeholder_album"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<!-- Recently played albums -->
|
<!-- Recently played albums -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_recently_played_albums_sector"
|
android:id="@+id/home_recently_played_albums_sector"
|
||||||
|
|
@ -172,6 +183,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_recently_played_albums_placeholder"
|
||||||
|
layout="@layout/item_placeholder_album"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<!-- Fashback -->
|
<!-- Fashback -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_flashback_sector"
|
android:id="@+id/home_flashback_sector"
|
||||||
|
|
@ -202,6 +218,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_flashback_placeholder"
|
||||||
|
layout="@layout/item_placeholder_year"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<!-- Favorites -->
|
<!-- Favorites -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_starred_tracks_sector"
|
android:id="@+id/home_starred_tracks_sector"
|
||||||
|
|
@ -253,6 +274,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_starred_tracks_placeholder"
|
||||||
|
layout="@layout/item_placeholder_horizontal"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_starred_albums_sector"
|
android:id="@+id/home_starred_albums_sector"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -303,6 +329,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_starred_albums_placeholder"
|
||||||
|
layout="@layout/item_placeholder_horizontal"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_starred_artists_sector"
|
android:id="@+id/home_starred_artists_sector"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -353,6 +384,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_starred_artists_placeholder"
|
||||||
|
layout="@layout/item_placeholder_horizontal"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<!-- Downloaded tracks -->
|
<!-- Downloaded tracks -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_downloaded_tracks_sector"
|
android:id="@+id/home_downloaded_tracks_sector"
|
||||||
|
|
@ -389,9 +425,13 @@
|
||||||
android:paddingTop="12dp"
|
android:paddingTop="12dp"
|
||||||
android:paddingEnd="8dp"
|
android:paddingEnd="8dp"
|
||||||
android:text="See all" />
|
android:text="See all" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_downloaded_tracks_placeholder"
|
||||||
|
layout="@layout/item_placeholder_album"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/downloaded_tracks_recycler_view"
|
android:id="@+id/downloaded_tracks_recycler_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -457,6 +497,11 @@
|
||||||
android:paddingEnd="8dp"
|
android:paddingEnd="8dp"
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/home_recently_added_albums_placeholder"
|
||||||
|
layout="@layout/item_placeholder_album"
|
||||||
|
android:visibility="gone"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/library_album_placeholder"
|
||||||
|
layout="@layout/item_placeholder_album"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/library_artist_sector"
|
android:id="@+id/library_artist_sector"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -119,6 +124,11 @@
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/library_artist_placeholder"
|
||||||
|
layout="@layout/item_placeholder_album"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/library_genres_sector"
|
android:id="@+id/library_genres_sector"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -171,6 +181,11 @@
|
||||||
android:paddingEnd="8dp" />
|
android:paddingEnd="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/library_genre_placeholder"
|
||||||
|
layout="@layout/item_placeholder_genre"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/library_playlist_sector"
|
android:id="@+id/library_playlist_sector"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -221,5 +236,10 @@
|
||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/library_playlist_placeholder"
|
||||||
|
layout="@layout/item_placeholder_album"
|
||||||
|
android:visibility="gone"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
43
app/src/main/res/layout/item_placehoder_discovery.xml
Normal file
43
app/src/main/res/layout/item_placehoder_discovery.xml
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/placeholder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="8dp"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingEnd="8dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="12dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="9"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="12dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="172dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
</LinearLayout>
|
||||||
122
app/src/main/res/layout/item_placeholder_album.xml
Normal file
122
app/src/main/res/layout/item_placeholder_album.xml
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/placeholder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="8dp"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingEnd="8dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="12dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="8"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="12dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="22dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="2"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:paddingBottom="8dp">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="172dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginTop="8dp" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="112dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginTop="4dp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="172dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginTop="8dp" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="112dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginTop="4dp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="172dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginTop="8dp" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="112dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginTop="4dp" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
120
app/src/main/res/layout/item_placeholder_genre.xml
Normal file
120
app/src/main/res/layout/item_placeholder_genre.xml
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/placeholder"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="128dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:paddingEnd="16dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:paddingEnd="16dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:paddingEnd="16dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="196dp"
|
||||||
|
android:layout_height="54dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
300
app/src/main/res/layout/item_placeholder_horizontal.xml
Normal file
300
app/src/main/res/layout/item_placeholder_horizontal.xml
Normal file
|
|
@ -0,0 +1,300 @@
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/placeholder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="8dp"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:paddingBottom="8dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="12dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="8"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="12dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="22dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="2"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:paddingTop="8dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_cover_placeholder_1"
|
||||||
|
android:layout_width="52dp"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_margin="2dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_title_placeholder_1"
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_1"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_1"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/album_title_placeholder_1" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="18dp"
|
||||||
|
android:layout_height="18dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:paddingTop="3dp"
|
||||||
|
android:paddingBottom="3dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_cover_placeholder_2"
|
||||||
|
android:layout_width="52dp"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_margin="2dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_title_placeholder_2"
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_2"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/album_title_placeholder_2" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="18dp"
|
||||||
|
android:layout_height="18dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:paddingTop="3dp"
|
||||||
|
android:paddingBottom="3dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_cover_placeholder_3"
|
||||||
|
android:layout_width="52dp"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_margin="2dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_title_placeholder_3"
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_3"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/album_title_placeholder_3" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="18dp"
|
||||||
|
android:layout_height="18dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:paddingTop="3dp"
|
||||||
|
android:paddingBottom="3dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_cover_placeholder_4"
|
||||||
|
android:layout_width="52dp"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_margin="2dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_title_placeholder_4"
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_4"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_4"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/album_title_placeholder_4" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="18dp"
|
||||||
|
android:layout_height="18dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:paddingTop="3dp"
|
||||||
|
android:paddingBottom="3dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_cover_placeholder_5"
|
||||||
|
android:layout_width="52dp"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_margin="2dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_title_placeholder_5"
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_5"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="124dp"
|
||||||
|
android:layout_height="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/album_cover_placeholder_5"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/album_title_placeholder_5" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="18dp"
|
||||||
|
android:layout_height="18dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</LinearLayout>
|
||||||
49
app/src/main/res/layout/item_placeholder_year.xml
Normal file
49
app/src/main/res/layout/item_placeholder_year.xml
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/placeholder"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="128dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@color/placeholderColor" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:paddingEnd="16dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="72dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="72dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="172dp"
|
||||||
|
android:layout_height="72dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@color/placeholderColor"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="8dp"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
@ -32,7 +32,9 @@
|
||||||
<color name="chipSelectedBackgroundColor">#606060</color>
|
<color name="chipSelectedBackgroundColor">#606060</color>
|
||||||
<color name="chipUnelectedBackgroundColor">#1D1D1D</color>
|
<color name="chipUnelectedBackgroundColor">#1D1D1D</color>
|
||||||
|
|
||||||
<color name="startTintColor">#733ae6</color>
|
<color name="starTintColor">#733ae6</color>
|
||||||
<color name="startBackgroundTintColor">#1D1D1D</color>
|
<color name="starBackgroundTintColor">#1D1D1D</color>
|
||||||
|
|
||||||
|
<color name="placeholderColor">#1D1D1D</color>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@
|
||||||
|
|
||||||
<color name="white">#FFFFFF</color>
|
<color name="white">#FFFFFF</color>
|
||||||
|
|
||||||
<color name="startTintColor">#3700B3</color>
|
<color name="starTintColor">#3700B3</color>
|
||||||
<color name="startBackgroundTintColor">#f0f0f0</color>
|
<color name="starBackgroundTintColor">#f0f0f0</color>
|
||||||
|
|
||||||
|
<color name="placeholderColor">#F1F3F4</color>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue