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.github.ksoichiro.android.observablescrollview.ObservableListView;
|
||||||
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
||||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||||
|
import com.kabouzeid.gramophone.BuildConfig;
|
||||||
import com.kabouzeid.gramophone.R;
|
import com.kabouzeid.gramophone.R;
|
||||||
import com.kabouzeid.gramophone.adapter.album.HorizontalAlbumAdapter;
|
import com.kabouzeid.gramophone.adapter.album.HorizontalAlbumAdapter;
|
||||||
import com.kabouzeid.gramophone.adapter.song.ArtistSongAdapter;
|
import com.kabouzeid.gramophone.adapter.song.ArtistSongAdapter;
|
||||||
|
|
@ -218,6 +219,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadBiography() {
|
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>() {
|
lastFMRestClient.getApiService().getArtistInfo(artist.name, null).enqueue(new Callback<LastFmArtist>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Response<LastFmArtist> response) {
|
public void onResponse(Response<LastFmArtist> response) {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
package com.kabouzeid.gramophone.ui.activities;
|
||||||
|
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.transition.Slide;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
@ -77,6 +79,10 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
||||||
checkIsEmpty();
|
checkIsEmpty();
|
||||||
|
|
||||||
setUpToolBar();
|
setUpToolBar();
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
|
getWindow().setEnterTransition(new Slide());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -214,4 +214,12 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
||||||
super.setTaskDescriptionColor(color);
|
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.annotation.Nullable;
|
||||||
import android.support.v4.app.ActivityOptionsCompat;
|
import android.support.v4.app.ActivityOptionsCompat;
|
||||||
import android.support.v4.util.Pair;
|
import android.support.v4.util.Pair;
|
||||||
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.kabouzeid.gramophone.R;
|
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.AlbumDetailActivity;
|
||||||
import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity;
|
import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity;
|
||||||
import com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity;
|
import com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity;
|
||||||
|
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
* @author Karim Abou Zeid (kabouzeid)
|
||||||
*/
|
*/
|
||||||
public class NavigationUtil {
|
public class NavigationUtil {
|
||||||
|
|
||||||
public static void goToArtist(@NonNull final Activity activity, final int artistId, @Nullable final Pair... sharedElements) {
|
public static void goToArtist(@NonNull final Activity activity, final int artistId, @Nullable Pair... sharedElements) {
|
||||||
if (activity instanceof ArtistDetailActivity) return;
|
|
||||||
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
||||||
|
|
||||||
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
final Intent intent = new Intent(activity, ArtistDetailActivity.class);
|
||||||
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artistId);
|
intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artistId);
|
||||||
|
|
||||||
|
sharedElements = addMiniPlayerSharedElement(activity, sharedElements);
|
||||||
|
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void goToAlbum(@NonNull final Activity activity, final int albumId, @Nullable final Pair... sharedElements) {
|
public static void goToAlbum(@NonNull final Activity activity, final int albumId, @Nullable Pair... sharedElements) {
|
||||||
if (activity instanceof AlbumDetailActivity) return;
|
|
||||||
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
||||||
|
|
||||||
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
final Intent intent = new Intent(activity, AlbumDetailActivity.class);
|
||||||
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, albumId);
|
intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, albumId);
|
||||||
|
|
||||||
|
sharedElements = addMiniPlayerSharedElement(activity, sharedElements);
|
||||||
|
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
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;
|
if (!disableViewsAndCheckIsReadyForTransition(activity)) return;
|
||||||
|
|
||||||
final Intent intent = new Intent(activity, PlaylistDetailActivity.class);
|
final Intent intent = new Intent(activity, PlaylistDetailActivity.class);
|
||||||
intent.putExtra(PlaylistDetailActivity.EXTRA_PLAYLIST, playlist);
|
intent.putExtra(PlaylistDetailActivity.EXTRA_PLAYLIST, playlist);
|
||||||
|
|
||||||
|
sharedElements = addMiniPlayerSharedElement(activity, sharedElements);
|
||||||
|
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle());
|
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) {
|
private static boolean disableViewsAndCheckIsReadyForTransition(@NonNull final Activity activity) {
|
||||||
if (activity instanceof KabViewsDisableAble) {
|
if (activity instanceof KabViewsDisableAble) {
|
||||||
if (((KabViewsDisableAble) activity).areViewsEnabled()) {
|
if (((KabViewsDisableAble) activity).areViewsEnabled()) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:transitionGroup="true"
|
||||||
|
tools:ignore="UnusedAttribute">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/mini_player_height"
|
android:layout_height="@dimen/mini_player_height"
|
||||||
android:clickable="true"
|
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"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
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_album_art">album_art_transition</string>
|
||||||
<string name="transition_artist_image">artist_image_transition</string>
|
<string name="transition_artist_image">artist_image_transition</string>
|
||||||
<string name="transition_fab">fab_transition</string>
|
<string name="transition_fab">fab_transition</string>
|
||||||
|
<string name="transition_mini_player">mini_player_transition</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue