Added transition when opening a playlist.

This commit is contained in:
Karim Abou Zeid 2016-01-28 18:47:49 +01:00
commit dd98206ec7
7 changed files with 57 additions and 7 deletions

View file

@ -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) {

View file

@ -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

View file

@ -214,4 +214,12 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
super.setTaskDescriptionColor(color);
}
}
public MiniPlayerFragment getMiniPlayerFragment() {
return miniPlayerFragment;
}
public AbsPlayerFragment getPlayerFragment() {
return playerFragment;
}
}

View file

@ -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()) {

View file

@ -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"

View file

@ -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"

View file

@ -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>