pass items between activities to improve load times
This commit is contained in:
parent
fee5e5704c
commit
35f7c0cb2a
11 changed files with 90 additions and 32 deletions
|
|
@ -147,12 +147,12 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
|
|||
switch (getItemViewType()) {
|
||||
case ALBUM:
|
||||
NavigationUtil.goToAlbum(activity,
|
||||
((Album) item).getId(),
|
||||
(Album) item,
|
||||
Pair.create(image, activity.getResources().getString(R.string.transition_album_art)));
|
||||
break;
|
||||
case ARTIST:
|
||||
NavigationUtil.goToArtist(activity,
|
||||
((Artist) item).getId(),
|
||||
(Artist) item,
|
||||
Pair.create(image, activity.getResources().getString(R.string.transition_artist_image)));
|
||||
break;
|
||||
case SONG:
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
toggleChecked(getAdapterPosition());
|
||||
} else {
|
||||
Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_album_art))};
|
||||
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).getId(), albumPairs);
|
||||
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()), albumPairs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
|
|||
toggleChecked(getAdapterPosition());
|
||||
} else {
|
||||
Pair[] artistPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_artist_image))};
|
||||
NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()).getId(), artistPairs);
|
||||
NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()), artistPairs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ public class AudioFileCover {
|
|||
public AudioFileCover(String item) {
|
||||
ImageOptions options = new ImageOptions();
|
||||
options.setImageType(ImageType.Primary);
|
||||
options.setQuality(60);
|
||||
options.setMaxHeight(800);
|
||||
|
||||
this.location = App.getApiClient().GetImageUrl(item, options);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,11 +84,23 @@ public class Album implements Parcelable {
|
|||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeTypedList(songs);
|
||||
dest.writeString(id);
|
||||
dest.writeString(title);
|
||||
dest.writeInt(year);
|
||||
|
||||
dest.writeString(artistId);
|
||||
dest.writeString(artistName);
|
||||
}
|
||||
|
||||
protected Album(Parcel in) {
|
||||
this.songs = in.createTypedArrayList(Song.CREATOR);
|
||||
this.songs = new ArrayList<>();
|
||||
|
||||
this.id = in.readString();
|
||||
this.title = in.readString();
|
||||
this.year = in.readInt();
|
||||
|
||||
this.artistId = in.readString();
|
||||
this.artistName = in.readString();
|
||||
}
|
||||
|
||||
public static final Creator<Album> CREATOR = new Creator<Album>() {
|
||||
|
|
|
|||
|
|
@ -85,11 +85,19 @@ public class Artist implements Parcelable {
|
|||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeTypedList(this.albums);
|
||||
dest.writeString(id);
|
||||
dest.writeString(name);
|
||||
dest.writeLong(duration);
|
||||
}
|
||||
|
||||
protected Artist(Parcel in) {
|
||||
this.albums = in.createTypedArrayList(Album.CREATOR);
|
||||
this.genres = new ArrayList<>();
|
||||
this.albums = new ArrayList<>();
|
||||
this.songs = new ArrayList<>();
|
||||
|
||||
this.id = in.readString();
|
||||
this.name = in.readString();
|
||||
this.duration = in.readLong();
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<Artist> CREATOR = new Parcelable.Creator<Artist>() {
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ import butterknife.BindView;
|
|||
import butterknife.ButterKnife;
|
||||
|
||||
public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
||||
public static final String EXTRA_ALBUM = "extra_album";
|
||||
public static final String EXTRA_ALBUM_ID = "extra_album_id";
|
||||
|
||||
private Album album;
|
||||
|
|
@ -93,7 +94,15 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
setUpToolBar();
|
||||
setUpViews();
|
||||
|
||||
QueryUtil.getAlbum(getIntent().getExtras().getString(EXTRA_ALBUM_ID), new MediaCallback() {
|
||||
Album album = getIntent().getExtras().getParcelable(EXTRA_ALBUM);
|
||||
String id = getIntent().getExtras().getString(EXTRA_ALBUM_ID);
|
||||
|
||||
if (album != null) {
|
||||
setAlbum(album);
|
||||
id = album.getId();
|
||||
}
|
||||
|
||||
QueryUtil.getAlbum(id, new MediaCallback() {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
Album album = (Album) media.get(0);
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ import com.kabouzeid.gramophone.util.QueryUtil;
|
|||
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||
|
||||
public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
||||
public static final String EXTRA_ARTIST = "extra_artist";
|
||||
public static final String EXTRA_ARTIST_ID = "extra_artist_id";
|
||||
|
||||
@BindView(R.id.list)
|
||||
|
|
@ -114,7 +115,15 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
setUpToolbar();
|
||||
setUpViews();
|
||||
|
||||
QueryUtil.getArtist(getIntent().getExtras().getString(EXTRA_ARTIST_ID), new MediaCallback() {
|
||||
Artist artist = getIntent().getExtras().getParcelable(EXTRA_ARTIST);
|
||||
String id = getIntent().getExtras().getString(EXTRA_ARTIST_ID);
|
||||
|
||||
if (artist != null) {
|
||||
setArtist(artist);
|
||||
id = artist.getId();
|
||||
}
|
||||
|
||||
QueryUtil.getArtist(id, new MediaCallback() {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
Artist artist = (Artist) media.get(0);
|
||||
|
|
@ -240,7 +249,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
|
||||
private void setUpToolbar() {
|
||||
setSupportActionBar(toolbar);
|
||||
//noinspection ConstantConditions
|
||||
// noinspection ConstantConditions
|
||||
getSupportActionBar().setTitle(null);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
|
|
@ -339,8 +348,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
albumCountTextView.setText(MusicUtil.getAlbumCountString(this, artist.getAlbumCount()));
|
||||
durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, artist.getSongs())));
|
||||
|
||||
songAdapter.swapDataSet(artist.getSongs());
|
||||
albumAdapter.swapDataSet(artist.albums);
|
||||
// TODO this activity will crash when an artist is passed with an empty album array
|
||||
// something in the album adapter is causing the issue
|
||||
if (artist.albums.size() != 0) songAdapter.swapDataSet(artist.songs);
|
||||
if (artist.albums.size() != 0) albumAdapter.swapDataSet(artist.albums);
|
||||
}
|
||||
|
||||
private Artist getArtist() {
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
});
|
||||
}
|
||||
|
||||
private void setCurrentFragment(@SuppressWarnings("NullableProblems") Fragment fragment) {
|
||||
private void setCurrentFragment(Fragment fragment) {
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, null).commit();
|
||||
currentFragment = (MainActivityFragmentCallbacks) fragment;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,6 +139,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
if (PreferenceUtil.getInstance(getContext()).getRememberLastTab()) {
|
||||
pager.setCurrentItem(PreferenceUtil.getInstance(getContext()).getLastTab());
|
||||
}
|
||||
|
||||
pager.addOnPageChangeListener(this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import androidx.annotation.Nullable;
|
|||
import androidx.core.app.ActivityOptionsCompat;
|
||||
import androidx.core.util.Pair;
|
||||
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.model.Artist;
|
||||
import com.kabouzeid.gramophone.model.Genre;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity;
|
||||
|
|
@ -16,41 +18,54 @@ import com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity;
|
|||
|
||||
public class NavigationUtil {
|
||||
|
||||
public static void goToArtist(@NonNull final Activity activity, final String artistId, @Nullable Pair... sharedElements) {
|
||||
public static void goToArtist(@NonNull final Activity activity, final Artist artist, @Nullable Pair... sharedElements) {
|
||||
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
||||
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artistId);
|
||||
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST, artist);
|
||||
|
||||
if (sharedElements != null && sharedElements.length > 0) {
|
||||
// noinspection unchecked
|
||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||
} else {
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
startActivitySharedElements(activity, intent, sharedElements);
|
||||
}
|
||||
|
||||
public static void goToAlbum(@NonNull final Activity activity, final String albumId, @Nullable Pair... sharedElements) {
|
||||
public static void goToAlbum(@NonNull final Activity activity, final Album album, @Nullable Pair... sharedElements) {
|
||||
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
||||
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, albumId);
|
||||
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM, album);
|
||||
|
||||
if (sharedElements != null && sharedElements.length > 0) {
|
||||
// noinspection unchecked
|
||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||
} else {
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
startActivitySharedElements(activity, intent, sharedElements);
|
||||
}
|
||||
|
||||
public static void goToGenre(@NonNull final Activity activity, final Genre genre, @Nullable Pair... sharedElements) {
|
||||
final Intent intent = new Intent(activity, GenreDetailActivity.class);
|
||||
intent.putExtra(GenreDetailActivity.EXTRA_GENRE, genre);
|
||||
|
||||
activity.startActivity(intent);
|
||||
startActivitySharedElements(activity, intent, sharedElements);
|
||||
}
|
||||
|
||||
public static void goToPlaylist(@NonNull final Activity activity, final Playlist playlist, @Nullable Pair... sharedElements) {
|
||||
final Intent intent = new Intent(activity, PlaylistDetailActivity.class);
|
||||
intent.putExtra(PlaylistDetailActivity.EXTRA_PLAYLIST, playlist);
|
||||
|
||||
activity.startActivity(intent);
|
||||
startActivitySharedElements(activity, intent, sharedElements);
|
||||
}
|
||||
|
||||
public static void goToArtist(@NonNull final Activity activity, final String artist, @Nullable Pair... sharedElements) {
|
||||
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
||||
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artist);
|
||||
|
||||
startActivitySharedElements(activity, intent, sharedElements);
|
||||
}
|
||||
|
||||
public static void goToAlbum(@NonNull final Activity activity, final String album, @Nullable Pair... sharedElements) {
|
||||
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
||||
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, album);
|
||||
|
||||
startActivitySharedElements(activity, intent, sharedElements);
|
||||
}
|
||||
|
||||
public static void startActivitySharedElements(@NonNull final Activity activity, Intent intent, @Nullable Pair... sharedElements) {
|
||||
if (sharedElements != null && sharedElements.length > 0) {
|
||||
// noinspection unchecked
|
||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||
} else {
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue