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