From 58b277354bd51dc396ca133539e24cbce779f8cb Mon Sep 17 00:00:00 2001 From: Aidan Follestad Date: Sun, 19 Apr 2015 00:03:38 -0500 Subject: [PATCH] Progress with #13 --- .../ui/activities/MainActivity.java | 87 +++++++++++++++---- .../gramophone/util/NavigationUtil.java | 12 ++- app/src/main/res/layout/activity_main.xml | 6 +- 3 files changed, 82 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index c5200a82..008d56ac 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -1,9 +1,12 @@ package com.kabouzeid.gramophone.ui.activities; +import android.annotation.TargetApi; +import android.app.SharedElementCallback; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Bitmap; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; @@ -24,6 +27,8 @@ import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; +import android.view.View; +import android.view.Window; import android.widget.FrameLayout; import com.afollestad.materialdialogs.ThemeSingleton; @@ -58,9 +63,10 @@ import com.koushikdutta.ion.Ion; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Set; - +@TargetApi(Build.VERSION_CODES.LOLLIPOP) public class MainActivity extends AbsFabActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks, KabViewsDisableAble { @@ -74,6 +80,48 @@ public class MainActivity extends AbsFabActivity private ViewPager viewPager; private PagerSlidingTabStrip slidingTabLayout; private int currentPage = -1; + private boolean mIsReentering; + + public void setReentering(boolean reentering) { + this.mIsReentering = reentering; + } + + private final SharedElementCallback mCallback = new SharedElementCallback() { + @Override + public void onMapSharedElements(List names, Map sharedElements) { + if (!mIsReentering) { + View navigationBar = findViewById(android.R.id.navigationBarBackground); +// View statusBxar = findViewById(android.R.id.statusBarBackground); + View toolbarFrame = findViewById(R.id.toolbarFrame); +// if (statusBar != null) { +// names.add(statusBar.getTransitionName()); +// sharedElements.put(statusBar.getTransitionName(), statusBar); +// } + + if (navigationBar != null) { + names.add(navigationBar.getTransitionName()); + sharedElements.put(navigationBar.getTransitionName(), navigationBar); + } + if (toolbarFrame != null) { + names.add(toolbarFrame.getTransitionName()); + sharedElements.put(toolbarFrame.getTransitionName(), toolbarFrame); + } + } else { + names.remove(Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME); + sharedElements.remove(Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME); + names.remove(Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME); + sharedElements.remove(Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME); + names.remove("toolbar"); + sharedElements.remove("toolbar"); + } + } + }; + + @Override + public void onActivityReenter(int requestCode, Intent data) { + super.onActivityReenter(requestCode, data); + mIsReentering = true; + } @Override protected void onCreate(Bundle savedInstanceState) { @@ -81,6 +129,9 @@ public class MainActivity extends AbsFabActivity super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + if (Util.hasLollipopSDK()) + setExitSharedElementCallback(mCallback); + initViews(); navigationDrawerFragment.setUp( R.id.navigation_drawer, @@ -439,13 +490,13 @@ public class MainActivity extends AbsFabActivity return id; } - private boolean isArtistPage() { - return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.ARTIST.ordinal(); - } - - public ArtistViewFragment getArtistFragment() { - return (ArtistViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.ARTIST.ordinal()); - } +// private boolean isArtistPage() { +// return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.ARTIST.ordinal(); +// } +// +// public ArtistViewFragment getArtistFragment() { +// return (ArtistViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.ARTIST.ordinal()); +// } private boolean isAlbumPage() { return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.ALBUM.ordinal(); @@ -455,21 +506,21 @@ public class MainActivity extends AbsFabActivity return (AlbumViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.ALBUM.ordinal()); } - private boolean isSongPage() { - return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.SONG.ordinal(); - } - - public SongViewFragment getSongFragment() { - return (SongViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.SONG.ordinal()); - } +// private boolean isSongPage() { +// return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.SONG.ordinal(); +// } +// +// public SongViewFragment getSongFragment() { +// return (SongViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.SONG.ordinal()); +// } private boolean isPlaylistPage() { return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.PLAYLIST.ordinal(); } - public PlaylistViewFragment getPlaylistFragment() { - return (PlaylistViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.PLAYLIST.ordinal()); - } +// public PlaylistViewFragment getPlaylistFragment() { +// return (PlaylistViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.PLAYLIST.ordinal()); +// } private void setUpGridMenu(Menu menu) { boolean isPortrait = Util.isInPortraitMode(this); diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java index a8fc6e88..fdb2e638 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java @@ -17,6 +17,7 @@ import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity; import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity; +import com.kabouzeid.gramophone.ui.activities.MainActivity; import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity; import com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity; @@ -24,10 +25,12 @@ import com.kabouzeid.gramophone.ui.activities.PlaylistDetailActivity; * @author Karim Abou Zeid (kabouzeid) */ public class NavigationUtil { + public static void goToArtist(final Activity activity, final int artistId, final Pair[] sharedViews) { - if (activity instanceof ArtistDetailActivity) { + if (activity instanceof ArtistDetailActivity) return; - } + else if (activity instanceof MainActivity) + ((MainActivity) activity).setReentering(false); if ((activity instanceof KabViewsDisableAble && ((KabViewsDisableAble) activity).areViewsEnabled()) || !(activity instanceof KabViewsDisableAble)) { if (activity instanceof KabViewsDisableAble) ((KabViewsDisableAble) activity).disableViews(); @@ -45,9 +48,10 @@ public class NavigationUtil { } public static void goToAlbum(final Activity activity, final int albumId, final Pair[] sharedViews) { - if (activity instanceof AlbumDetailActivity) { + if (activity instanceof AlbumDetailActivity) return; - } + else if (activity instanceof MainActivity) + ((MainActivity) activity).setReentering(false); if ((activity instanceof KabViewsDisableAble && ((KabViewsDisableAble) activity).areViewsEnabled()) || !(activity instanceof KabViewsDisableAble)) { if (activity instanceof KabViewsDisableAble) ((KabViewsDisableAble) activity).disableViews(); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 18e3c758..cc979c82 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -19,14 +19,18 @@ android:fitsSystemWindows="true" /> + android:paddingTop="@dimen/main_toolbar_padding_top" + android:transitionName="toolbar" + tools:ignore="UnusedAttribute">