From 24f798e2b2d296464fb4790deedd4dba08fd29d6 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Sat, 21 Nov 2015 22:22:35 -0500 Subject: [PATCH] Move fragment code into adapter so attempts at shared view transitions might be possible. Code is set up for it, but it doesn't look quite right. Play around with how albums look in port/land mode. --- .../companionformagnatune/BrowseActivity.java | 39 ------------------- .../adapters/ArtistsAdapter.java | 33 ++++++++++++---- .../fragments/AlbumsFragment.java | 1 + .../fragments/ArtistsFragment.java | 2 +- .../main/res/layout-land/fragment_albums.xml | 10 +++++ .../main/res/layout-land/fragment_artist.xml | 26 +++++++++++++ app/src/main/res/layout/fragment_artist.xml | 1 + .../main/res/layout/listitem_album_card.xml | 7 ++-- app/src/main/res/layout/listitem_artist.xml | 1 + 9 files changed, 70 insertions(+), 50 deletions(-) create mode 100644 app/src/main/res/layout-land/fragment_albums.xml create mode 100644 app/src/main/res/layout-land/fragment_artist.xml diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java index 3470059..f6ee431 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java @@ -1,47 +1,20 @@ package com.magnatune.eyecreate.companionformagnatune; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; -import android.support.v4.content.LocalBroadcastManager; import com.heinrichreimersoftware.materialdrawer.DrawerActivity; import com.heinrichreimersoftware.materialdrawer.structure.DrawerItem; import com.heinrichreimersoftware.materialdrawer.structure.DrawerProfile; import com.magnatune.eyecreate.companionformagnatune.fragments.AlbumsFragment; -import com.magnatune.eyecreate.companionformagnatune.fragments.ArtistFragment; import com.magnatune.eyecreate.companionformagnatune.fragments.ArtistsFragment; import com.magnatune.eyecreate.companionformagnatune.login.MagnatuneAccountManager; public class BrowseActivity extends DrawerActivity { - public static final String ACTION_ONCLICK_ACTIVATED = "browseactivityonclick"; - public static final String EXTRA_FRAGMENT = "fragmenttostart"; - public static final String EXTRA_FRAGMENT_ARGS = "fragmentargs"; - - BroadcastReceiver onClickManager = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if(intent.hasExtra(EXTRA_FRAGMENT)) { - if(intent.getStringExtra(EXTRA_FRAGMENT).equals(ArtistFragment.class.getName())) { - ArtistFragment fragment = new ArtistFragment(); - fragment.setArguments(intent.getBundleExtra(EXTRA_FRAGMENT_ARGS)); - getSupportFragmentManager().beginTransaction() - .setCustomAnimations(R.anim.fragment_enter,R.anim.fragment_exit,R.anim.fragment_pop_enter,R.anim.fragment_pop_exit) - .replace(R.id.fragment_holder,fragment,"artist") - .addToBackStack("artist") - .commit(); - } - } - } - }; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -84,16 +57,4 @@ public class BrowseActivity extends DrawerActivity { .commit(); } } - - @Override - protected void onResume() { - super.onResume(); - LocalBroadcastManager.getInstance(this).registerReceiver(onClickManager,new IntentFilter(ACTION_ONCLICK_ACTIVATED)); - } - - @Override - protected void onPause() { - super.onPause(); - LocalBroadcastManager.getInstance(this).unregisterReceiver(onClickManager); - } } diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/ArtistsAdapter.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/ArtistsAdapter.java index db7c5ad..9a0e01b 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/ArtistsAdapter.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/ArtistsAdapter.java @@ -1,13 +1,15 @@ package com.magnatune.eyecreate.companionformagnatune.adapters; import android.content.Context; -import android.content.Intent; +import android.os.Build; import android.os.Bundle; -import android.support.v4.content.LocalBroadcastManager; +import android.support.v4.app.FragmentManager; +import android.transition.AutoTransition; +import android.transition.Slide; +import android.view.Gravity; import android.view.View; import android.view.ViewGroup; -import com.magnatune.eyecreate.companionformagnatune.BrowseActivity; import com.magnatune.eyecreate.companionformagnatune.R; import com.magnatune.eyecreate.companionformagnatune.fragments.ArtistFragment; import com.magnatune.eyecreate.companionformagnatune.model.Artist; @@ -18,6 +20,13 @@ import io.realm.RealmResults; public class ArtistsAdapter extends RealmBasedRecyclerViewAdapter { + FragmentManager fragmentManager; + + public ArtistsAdapter(Context context, RealmResults realmResults, boolean automaticUpdate, boolean animateResults, boolean addSectionHeaders, String headerColumnName, FragmentManager fragmentManager) { + super(context, realmResults, automaticUpdate, animateResults, addSectionHeaders, headerColumnName); + this.fragmentManager = fragmentManager; + } + public ArtistsAdapter(Context context, RealmResults realmResults, boolean automaticUpdate, boolean animateResults, boolean addSectionHeaders, String headerColumnName) { super(context, realmResults, automaticUpdate, animateResults, addSectionHeaders, headerColumnName); } @@ -37,10 +46,20 @@ public class ArtistsAdapter extends RealmBasedRecyclerViewAdapter= Build.VERSION_CODES.LOLLIPOP) { + fragment.setEnterTransition(new Slide(Gravity.BOTTOM)); + fragment.setExitTransition(new Slide(Gravity.BOTTOM)); + fragment.setSharedElementEnterTransition(new AutoTransition()); + fragment.setSharedElementReturnTransition(new AutoTransition()); + } + 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") + .replace(R.id.fragment_holder, fragment, "artist") + .addToBackStack("artist") + .commit(); } }); } diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java index bba4a3f..4cbd9ff 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java @@ -42,6 +42,7 @@ 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() { diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistsFragment.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistsFragment.java index 2c13649..a93f4cd 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistsFragment.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistsFragment.java @@ -42,7 +42,7 @@ public class ArtistsFragment extends Fragment { triggerDBUpdate(); } }); - recyclerView.setAdapter(new ArtistsAdapter(getActivity(), db.where(Artist.class).findAllSorted("artistname"), true, true,true,"artistname")); + recyclerView.setAdapter(new ArtistsAdapter(getActivity(), db.where(Artist.class).findAllSorted("artistname"), true, true,true,"artistname",getFragmentManager())); if (db.where(Artist.class).findAll().size() < 1) { triggerDBUpdate(); } diff --git a/app/src/main/res/layout-land/fragment_albums.xml b/app/src/main/res/layout-land/fragment_albums.xml new file mode 100644 index 0000000..7e1c87d --- /dev/null +++ b/app/src/main/res/layout-land/fragment_albums.xml @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_artist.xml b/app/src/main/res/layout-land/fragment_artist.xml new file mode 100644 index 0000000..da7dbc7 --- /dev/null +++ b/app/src/main/res/layout-land/fragment_artist.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_artist.xml b/app/src/main/res/layout/fragment_artist.xml index 346e55d..200cb74 100644 --- a/app/src/main/res/layout/fragment_artist.xml +++ b/app/src/main/res/layout/fragment_artist.xml @@ -8,6 +8,7 @@ android:layout_margin="10dp" android:textStyle="bold" android:textSize="20sp" + android:transitionName="artist_name" android:id="@+id/artist_name"/> \ No newline at end of file -- GitLab