Added transition when opening a playlist.
This commit is contained in:
parent
2ce9b38747
commit
dd98206ec7
7 changed files with 57 additions and 7 deletions
|
|
@ -28,6 +28,7 @@ import com.bumptech.glide.request.target.Target;
|
|||
import com.github.ksoichiro.android.observablescrollview.ObservableListView;
|
||||
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||
import com.kabouzeid.gramophone.BuildConfig;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.album.HorizontalAlbumAdapter;
|
||||
import com.kabouzeid.gramophone.adapter.song.ArtistSongAdapter;
|
||||
|
|
@ -218,6 +219,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
}
|
||||
|
||||
private void loadBiography() {
|
||||
if (BuildConfig.DEBUG) {
|
||||
biography = Html.fromHtml("Not available in debug builds, because this is causing a crash for whatever reason.");
|
||||
return;
|
||||
}
|
||||
lastFMRestClient.getApiService().getArtistInfo(artist.name, null).enqueue(new Callback<LastFmArtist>() {
|
||||
@Override
|
||||
public void onResponse(Response<LastFmArtist> response) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
package com.kabouzeid.gramophone.ui.activities;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.transition.Slide;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
|
@ -77,6 +79,10 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
checkIsEmpty();
|
||||
|
||||
setUpToolBar();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
getWindow().setEnterTransition(new Slide());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -214,4 +214,12 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
super.setTaskDescriptionColor(color);
|
||||
}
|
||||
}
|
||||
|
||||
public MiniPlayerFragment getMiniPlayerFragment() {
|
||||
return miniPlayerFragment;
|
||||
}
|
||||
|
||||
public AbsPlayerFragment getPlayerFragment() {
|
||||
return playerFragment;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import android.support.annotation.NonNull;
|
|||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
|
|
@ -17,44 +18,68 @@ import com.kabouzeid.gramophone.model.Playlist;
|
|||
import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class NavigationUtil {
|
||||
|
||||
public static void goToArtist(@NonNull final Activity activity, final int artistId, @Nullable final Pair... sharedElements) {
|
||||
if (activity instanceof ArtistDetailActivity) return;
|
||||
public static void goToArtist(@NonNull final Activity activity, final int artistId, @Nullable Pair... sharedElements) {
|
||||
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
||||
|
||||
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
||||
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artistId);
|
||||
|
||||
sharedElements = addMiniPlayerSharedElement(activity, sharedElements);
|
||||
|
||||
//noinspection unchecked
|
||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||
}
|
||||
|
||||
public static void goToAlbum(@NonNull final Activity activity, final int albumId, @Nullable final Pair... sharedElements) {
|
||||
if (activity instanceof AlbumDetailActivity) return;
|
||||
public static void goToAlbum(@NonNull final Activity activity, final int albumId, @Nullable Pair... sharedElements) {
|
||||
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
||||
|
||||
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
||||
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, albumId);
|
||||
|
||||
sharedElements = addMiniPlayerSharedElement(activity, sharedElements);
|
||||
|
||||
//noinspection unchecked
|
||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||
}
|
||||
|
||||
public static void goToPlaylist(@NonNull final Activity activity, final Playlist playlist, @Nullable final Pair... sharedElements) {
|
||||
public static void goToPlaylist(@NonNull final Activity activity, final Playlist playlist, @Nullable Pair... sharedElements) {
|
||||
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
||||
|
||||
final Intent intent = new Intent(activity, PlaylistDetailActivity.class);
|
||||
intent.putExtra(PlaylistDetailActivity.EXTRA_PLAYLIST, playlist);
|
||||
|
||||
sharedElements = addMiniPlayerSharedElement(activity, sharedElements);
|
||||
|
||||
//noinspection unchecked
|
||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||
}
|
||||
|
||||
private static Pair[] addMiniPlayerSharedElement(Activity activity, @Nullable Pair... sharedElements) {
|
||||
if (activity instanceof AbsSlidingMusicPanelActivity) {
|
||||
View miniPlayer = ((AbsSlidingMusicPanelActivity) activity).getMiniPlayerFragment().getView();
|
||||
Pair miniPlayerSharedElement = Pair.create(miniPlayer, activity.getString(R.string.transition_mini_player));
|
||||
|
||||
if (sharedElements != null) {
|
||||
Pair[] tmpSharedElements;
|
||||
tmpSharedElements = new Pair[sharedElements.length + 1];
|
||||
System.arraycopy(sharedElements, 0, tmpSharedElements, 0, sharedElements.length);
|
||||
sharedElements = tmpSharedElements;
|
||||
|
||||
sharedElements[sharedElements.length - 1] = miniPlayerSharedElement;
|
||||
} else {
|
||||
sharedElements = new Pair[]{miniPlayerSharedElement};
|
||||
}
|
||||
}
|
||||
return sharedElements;
|
||||
}
|
||||
|
||||
private static boolean disableViewsAndCheckIsReadyForTransition(@NonNull final Activity activity) {
|
||||
if (activity instanceof KabViewsDisableAble) {
|
||||
if (((KabViewsDisableAble) activity).areViewsEnabled()) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:transitionGroup="true"
|
||||
tools:ignore="UnusedAttribute">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/mini_player_height"
|
||||
android:clickable="true"
|
||||
android:focusable="false">
|
||||
android:focusable="false"
|
||||
android:transitionName="@string/transition_mini_player"
|
||||
tools:ignore="UnusedAttribute">
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
|
|
|
|||
|
|
@ -3,4 +3,5 @@
|
|||
<string name="transition_album_art">album_art_transition</string>
|
||||
<string name="transition_artist_image">artist_image_transition</string>
|
||||
<string name="transition_fab">fab_transition</string>
|
||||
<string name="transition_mini_player">mini_player_transition</string>
|
||||
</resources>
|
||||
Loading…
Add table
Add a link
Reference in a new issue