Finally figured out transitions. The biggest issue was that it wasn't clear transition names had to be unique for the whole fragment. Now also chaining transitions for different effects.
This commit is contained in:
@@ -7,8 +7,11 @@ import android.os.Bundle;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v7.graphics.Palette;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.transition.ChangeBounds;
|
||||
import android.transition.ChangeImageTransform;
|
||||
import android.transition.ChangeTransform;
|
||||
import android.transition.Slide;
|
||||
import android.transition.TransitionSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -47,6 +50,9 @@ public class AlbumsAdapter extends RealmBasedRecyclerViewAdapter<Album,AlbumView
|
||||
public void onBindRealmViewHolder(final AlbumViewHolder albumViewHolder, final int i) {
|
||||
albumViewHolder.artistName.setText(realmResults.get(i).getArtist().getArtistname());
|
||||
albumViewHolder.albumName.setText(realmResults.get(i).getAlbumname());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
albumViewHolder.albumArt.setTransitionName(realmResults.get(i).getAlbumsku());
|
||||
}
|
||||
Picasso.with(albumViewHolder.itemView.getContext()).load(realmResults.get(i).getCover_small()).into(albumViewHolder.albumArt, new Callback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
@@ -80,13 +86,15 @@ public class AlbumsAdapter extends RealmBasedRecyclerViewAdapter<Album,AlbumView
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
fragment.setEnterTransition(new Slide(Gravity.BOTTOM));
|
||||
fragment.setExitTransition(new Slide(Gravity.BOTTOM));
|
||||
fragment.setSharedElementEnterTransition(new ChangeImageTransform());
|
||||
fragment.setSharedElementReturnTransition(new ChangeImageTransform());
|
||||
TransitionSet sharedTransition = new TransitionSet();
|
||||
sharedTransition.addTransition(new ChangeImageTransform()).addTransition(new ChangeBounds()).addTransition(new ChangeTransform());
|
||||
fragment.setSharedElementEnterTransition(sharedTransition);
|
||||
fragment.setSharedElementReturnTransition(sharedTransition);
|
||||
}
|
||||
fragment.setArguments(args);
|
||||
fragmentManager.beginTransaction()
|
||||
.setCustomAnimations(R.anim.fragment_enter,R.anim.fragment_exit,R.anim.fragment_pop_enter,R.anim.fragment_pop_exit)
|
||||
.addSharedElement(albumViewHolder.albumArt,"albumart")
|
||||
.addSharedElement(albumViewHolder.albumArt,realmResults.get(i).getAlbumsku())
|
||||
.replace(R.id.fragment_holder, fragment, "tracks")
|
||||
.addToBackStack("tracks")
|
||||
.commit();
|
||||
|
||||
@@ -4,8 +4,10 @@ import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.transition.ChangeBounds;
|
||||
import android.transition.ChangeTransform;
|
||||
import android.transition.Slide;
|
||||
import android.transition.TransitionSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -41,6 +43,9 @@ public class ArtistsAdapter extends RealmBasedRecyclerViewAdapter<Artist,ArtistV
|
||||
@Override
|
||||
public void onBindRealmViewHolder(final ArtistViewHolder artistViewHolder, final int i) {
|
||||
artistViewHolder.artistName.setText(realmResults.get(i).getArtistname());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
artistViewHolder.artistName.setTransitionName(realmResults.get(i).getArtistname());
|
||||
}
|
||||
artistViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
@@ -50,13 +55,15 @@ public class ArtistsAdapter extends RealmBasedRecyclerViewAdapter<Artist,ArtistV
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
fragment.setEnterTransition(new Slide(Gravity.BOTTOM));
|
||||
fragment.setExitTransition(new Slide(Gravity.BOTTOM));
|
||||
fragment.setSharedElementEnterTransition(new ChangeTransform());
|
||||
fragment.setSharedElementReturnTransition(new ChangeTransform());
|
||||
TransitionSet sharedTransition = new TransitionSet();
|
||||
sharedTransition.addTransition(new ChangeBounds()).addTransition(new ChangeTransform());
|
||||
fragment.setSharedElementEnterTransition(sharedTransition);
|
||||
fragment.setSharedElementReturnTransition(sharedTransition);
|
||||
}
|
||||
fragment.setArguments(args);
|
||||
fragmentManager.beginTransaction()
|
||||
.setCustomAnimations(R.anim.fragment_enter,R.anim.fragment_exit,R.anim.fragment_pop_enter,R.anim.fragment_pop_exit)
|
||||
.addSharedElement(artistViewHolder.artistName, "artist_name")
|
||||
.addSharedElement(artistViewHolder.artistName, realmResults.get(i).getArtistname())
|
||||
.replace(R.id.fragment_holder, fragment, "artist")
|
||||
.addToBackStack("artist")
|
||||
.commit();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.magnatune.eyecreate.companionformagnatune.fragments;
|
||||
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
@@ -73,6 +74,9 @@ public class AlbumFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
final View v = inflater.inflate(R.layout.fragment_album, container, false);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
v.findViewById(R.id.album_cover).setTransitionName(getArguments().getString(ARG_ALBUM_ID));
|
||||
}
|
||||
ListView listView = (ListView) v.findViewById(R.id.album_tracks);
|
||||
Album currentAlbum = db.where(Album.class).equalTo("albumsku",getArguments().getString(ARG_ALBUM_ID)).findFirst();
|
||||
((TextView)v.findViewById(R.id.album_name)).setText(currentAlbum.getAlbumname());
|
||||
|
||||
@@ -5,13 +5,19 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.transition.ChangeBounds;
|
||||
import android.transition.ChangeImageTransform;
|
||||
import android.transition.ChangeTransform;
|
||||
import android.transition.TransitionSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
|
||||
import com.magnatune.eyecreate.companionformagnatune.R;
|
||||
import com.magnatune.eyecreate.companionformagnatune.adapters.AlbumsAdapter;
|
||||
@@ -42,7 +48,6 @@ public class AlbumsFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
recyclerView = (RealmRecyclerView) inflater.inflate(R.layout.fragment_albums,container,false);
|
||||
|
||||
recyclerView.setOnRefreshListener(new RealmRecyclerView.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.magnatune.eyecreate.companionformagnatune.fragments;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
@@ -44,6 +45,9 @@ public class ArtistFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View v = inflater.inflate(R.layout.fragment_artist,container,false);;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
v.findViewById(R.id.artist_name).setTransitionName(getArguments().getString(ARG_ARTIST_NAME));
|
||||
}
|
||||
recyclerView = (RealmRecyclerView) v.findViewById(R.id.artist_albums);
|
||||
Artist artist = db.where(Artist.class).equalTo("artistname",getArguments().getString(ARG_ARTIST_NAME)).findFirst();
|
||||
((TextView) v.findViewById(R.id.artist_name)).setText(artist.getArtistname());
|
||||
|
||||
@@ -12,8 +12,7 @@
|
||||
<ImageView
|
||||
android:id="@+id/album_cover"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:transitionName="albumart" />
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/album_name"
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
android:layout_margin="10dp"
|
||||
android:textStyle="bold"
|
||||
android:textSize="20sp"
|
||||
android:transitionName="artist_name"
|
||||
android:id="@+id/artist_name"/>
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
android:layout_height="180dp"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="fitCenter"
|
||||
android:transitionName="albumart"
|
||||
android:id="@+id/album_art"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -9,6 +9,5 @@
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:transitionName="artist_name"
|
||||
android:id="@+id/artist_name"/>
|
||||
</LinearLayout>
|
||||
Reference in New Issue
Block a user