refactor arguments for shared element transitions

This commit is contained in:
dkanada 2021-05-16 18:52:55 +09:00
commit 589f966655
11 changed files with 28 additions and 37 deletions

View file

@ -99,7 +99,7 @@ public class AlbumDetailActivity extends AbsMusicContentActivity implements Pale
setUpRecyclerView();
setUpSongsAdapter();
binding.artistText.setOnClickListener(v -> {
NavigationUtil.startArtist(AlbumDetailActivity.this, new Artist(album));
NavigationUtil.startArtist(AlbumDetailActivity.this, new Artist(album), null);
});
setColors(DialogUtils.resolveColor(this, R.attr.defaultFooterColor));
@ -199,7 +199,7 @@ public class AlbumDetailActivity extends AbsMusicContentActivity implements Pale
super.onBackPressed();
return true;
case R.id.action_go_to_artist:
NavigationUtil.startArtist(this, new Artist(album));
NavigationUtil.startArtist(this, new Artist(album), null);
return true;
}

View file

@ -114,7 +114,7 @@ public class GenreAdapter extends RecyclerView.Adapter<GenreAdapter.ViewHolder>
@Override
public void onClick(View view) {
Genre genre = dataSet.get(getBindingAdapterPosition());
NavigationUtil.startGenre(activity, genre);
NavigationUtil.startGenre(activity, genre, null);
}
}
}

View file

@ -164,7 +164,7 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter<PlaylistAdapter.ViewH
toggleChecked(getBindingAdapterPosition());
} else {
Playlist playlist = dataSet.get(getBindingAdapterPosition());
NavigationUtil.startPlaylist(activity, playlist);
NavigationUtil.startPlaylist(activity, playlist, null);
}
}

View file

@ -219,8 +219,8 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
if (isInQuickSelectMode()) {
toggleChecked(getBindingAdapterPosition());
} else {
Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_album_image))};
NavigationUtil.startAlbum(activity, dataSet.get(getBindingAdapterPosition()), albumPairs);
Pair transition = Pair.create(image, activity.getResources().getString(R.string.transition_album_image));
NavigationUtil.startAlbum(activity, dataSet.get(getBindingAdapterPosition()), transition);
}
}

View file

@ -195,8 +195,8 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
if (isInQuickSelectMode()) {
toggleChecked(getBindingAdapterPosition());
} else {
Pair[] artistPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_artist_image))};
NavigationUtil.startArtist(activity, dataSet.get(getBindingAdapterPosition()), artistPairs);
Pair transition = Pair.create(image, activity.getResources().getString(R.string.transition_artist_image));
NavigationUtil.startArtist(activity, dataSet.get(getBindingAdapterPosition()), transition);
}
}

View file

@ -102,8 +102,8 @@ public class ArtistSongAdapter extends ArrayAdapter<Song> implements MaterialCab
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.action_go_to_album) {
Pair[] albumPairs = new Pair[]{Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_image))};
NavigationUtil.startAlbum(activity, new Album(song), albumPairs);
Pair transition = Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_image));
NavigationUtil.startAlbum(activity, new Album(song), transition);
return true;
}

View file

@ -253,8 +253,8 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
if (image != null && image.getVisibility() == View.VISIBLE) {
switch (item.getItemId()) {
case R.id.action_go_to_album:
Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getResources().getString(R.string.transition_album_image))};
NavigationUtil.startAlbum(activity, new Album(getSong()), albumPairs);
Pair transition = Pair.create(image, activity.getResources().getString(R.string.transition_album_image));
NavigationUtil.startAlbum(activity, new Album(getSong()), transition);
return true;
}
}

View file

@ -70,10 +70,10 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
SongDetailDialog.create(song).show(getParentFragmentManager(), SongDetailDialog.TAG);
return true;
case R.id.action_go_to_album:
NavigationUtil.startAlbum(requireActivity(), new Album(song));
NavigationUtil.startAlbum(requireActivity(), new Album(song), null);
return true;
case R.id.action_go_to_artist:
NavigationUtil.startArtist(requireActivity(), new Artist(song));
NavigationUtil.startArtist(requireActivity(), new Artist(song), null);
return true;
}
return false;

View file

@ -44,10 +44,10 @@ public class SongMenuHelper {
NavigationUtil.startDownload(activity, song);
return true;
case R.id.action_go_to_album:
NavigationUtil.startAlbum(activity, new Album(song));
NavigationUtil.startAlbum(activity, new Album(song), null);
return true;
case R.id.action_go_to_artist:
NavigationUtil.startArtist(activity, new Artist(song));
NavigationUtil.startArtist(activity, new Artist(song), null);
return true;
}
return false;

View file

@ -30,20 +30,13 @@ public class DownloadService extends Service {
public static final String EXTRA_SONG = PACKAGE_NAME + ".extra.song";
private Executor executor;
private Handler handler;
private DownloadNotification notification;
@Override
public void onCreate() {
super.onCreate();
Looper looper = Looper.myLooper();
if (looper == null) {
looper = Looper.getMainLooper();
}
executor = Executors.newFixedThreadPool(4);
handler = new Handler(looper);
notification = new DownloadNotification(this);
}

View file

@ -6,8 +6,6 @@ import android.content.Intent;
import android.net.Uri;
import android.provider.Settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.util.Pair;
@ -26,7 +24,7 @@ import com.dkanada.gramophone.model.Song;
import com.dkanada.gramophone.service.DownloadService;
public class NavigationUtil {
public static void openUrl(@NonNull final Context context, String url) {
public static void openUrl(Context context, String url) {
final Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
@ -35,7 +33,7 @@ public class NavigationUtil {
context.startActivity(intent);
}
public static void openSettings(@NonNull final Context context) {
public static void openSettings(Context context) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
@ -44,57 +42,57 @@ public class NavigationUtil {
context.startActivity(intent);
}
public static void startLogin(@NonNull final Context context) {
public static void startLogin(Context context) {
final Intent intent = new Intent(context, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);
}
public static void startSelect(@NonNull final Context context) {
public static void startSelect(Context context) {
final Intent intent = new Intent(context, SelectActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);
}
public static void startMain(@NonNull final Context context) {
public static void startMain(Context context) {
final Intent intent = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
}
public static void startArtist(@NonNull final Activity activity, final Artist artist, @Nullable Pair... sharedElements) {
public static void startArtist(Activity activity, Artist artist, Pair sharedElements) {
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST, artist);
startActivitySharedElements(activity, intent, sharedElements);
}
public static void startAlbum(@NonNull final Activity activity, final Album album, @Nullable Pair... sharedElements) {
public static void startAlbum(Activity activity, Album album, Pair sharedElements) {
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM, album);
startActivitySharedElements(activity, intent, sharedElements);
}
public static void startGenre(@NonNull final Activity activity, final Genre genre, @Nullable Pair... sharedElements) {
public static void startGenre(Activity activity, Genre genre, Pair sharedElements) {
final Intent intent = new Intent(activity, GenreDetailActivity.class);
intent.putExtra(GenreDetailActivity.EXTRA_GENRE, genre);
startActivitySharedElements(activity, intent, sharedElements);
}
public static void startPlaylist(@NonNull final Activity activity, final Playlist playlist, @Nullable Pair... sharedElements) {
public static void startPlaylist(Activity activity, Playlist playlist, Pair sharedElements) {
final Intent intent = new Intent(activity, PlaylistDetailActivity.class);
intent.putExtra(PlaylistDetailActivity.EXTRA_PLAYLIST, playlist);
startActivitySharedElements(activity, intent, sharedElements);
}
public static void startActivitySharedElements(@NonNull final Activity activity, Intent intent, @Nullable Pair... sharedElements) {
if (sharedElements != null && sharedElements.length > 0) {
public static void startActivitySharedElements(Activity activity, Intent intent, Pair sharedElements) {
if (sharedElements != null) {
// noinspection unchecked
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
} else {
@ -102,7 +100,7 @@ public class NavigationUtil {
}
}
public static void startDownload(@NonNull Activity activity, Song song) {
public static void startDownload(Activity activity, Song song) {
Intent intent = new Intent(activity, DownloadService.class);
intent.putExtra(DownloadService.EXTRA_SONG, song);