From 30282e79fe001175c51dc7c112ff3d462adb8f7d Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Thu, 11 Nov 2021 20:59:28 +0530 Subject: [PATCH] Added proper transitions --- .../retromusic/activities/MainActivity.kt | 13 ++++++++ .../retromusic/extensions/ColorExtensions.kt | 9 +++++- .../fragments/base/AbsRecyclerViewFragment.kt | 4 +++ .../fragments/folder/FoldersFragment.kt | 4 +++ .../retromusic/fragments/home/HomeFragment.kt | 5 ++++ .../res/animator/nav_default_enter_anim.xml | 30 ------------------- .../res/animator/nav_default_exit_anim.xml | 9 ------ .../animator/nav_default_pop_enter_anim.xml | 30 ------------------- .../animator/nav_default_pop_exit_anim.xml | 9 ------ .../res/layout-land/fragment_banner_home.xml | 5 ++-- .../main/res/layout-land/fragment_home.xml | 6 ++-- .../main/res/layout/fragment_banner_home.xml | 5 ++-- app/src/main/res/layout/fragment_home.xml | 6 ++-- .../res/layout/fragment_main_recycler.xml | 8 ++--- 14 files changed, 48 insertions(+), 95 deletions(-) delete mode 100644 app/src/main/res/animator/nav_default_enter_anim.xml delete mode 100644 app/src/main/res/animator/nav_default_exit_anim.xml delete mode 100644 app/src/main/res/animator/nav_default_pop_enter_anim.xml delete mode 100644 app/src/main/res/animator/nav_default_pop_exit_anim.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index 7f0d81fb..29c52c95 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -103,6 +103,9 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener { } } navController.addOnDestinationChangedListener { _, destination, _ -> + // This is more like a work-around as for start destination of navGraph + // enterTransition won't work as expected + navGraph.setStartDestination(R.id.libraryFragment) when (destination.id) { R.id.action_home, R.id.action_song, R.id.action_album, R.id.action_artist, R.id.action_folder, R.id.action_playlist, R.id.action_genre -> { // Save the last tab @@ -128,6 +131,16 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener { override fun onSupportNavigateUp(): Boolean = findNavController(R.id.fragment_container).navigateUp() + override fun onBackPressed() { + val bottomTabs = listOf(R.id.action_home, R.id.action_song, R.id.action_album, R.id.action_artist, R.id.action_folder, R.id.action_playlist, R.id.action_genre) + val currentDestinationId = findNavController(R.id.fragment_container).currentDestination?.id + if (bottomTabs.contains(currentDestinationId)) { + finish() + } else { + findNavController(R.id.fragment_container).navigateUp() + } + } + override fun onResume() { super.onResume() PreferenceUtil.registerOnSharedPreferenceChangedListener(this) diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt index 89344981..8c0bb5b3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ColorExtensions.kt @@ -227,5 +227,12 @@ fun Context.getColorCompat(@ColorRes colorRes: Int): Int { @ColorInt fun Context.darkAccentColor(): Int { - return ColorUtils.blendARGB(accentColor(), surfaceColor(), 0.975f) + return ColorUtils.blendARGB( + accentColor(), + surfaceColor(), + if (surfaceColor().isColorLight) 0.96f else 0.975f + ) } + +inline val @receiver:ColorInt Int.isColorLight + get() = ColorUtil.isColorLight(this) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt index 8b8a17a9..d82b51e7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt @@ -37,6 +37,7 @@ import code.name.monkey.retromusic.extensions.drawNextToNavbar import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.util.ThemedFastScroller.create import com.google.android.material.shape.MaterialShapeDrawable +import com.google.android.material.transition.MaterialFadeThrough import com.google.android.material.transition.MaterialSharedAxis import me.zhanghai.android.fastscroll.FastScroller import me.zhanghai.android.fastscroll.FastScrollerBuilder @@ -56,6 +57,9 @@ abstract class AbsRecyclerViewFragment, LM : Recycle _binding = FragmentMainRecyclerBinding.bind(view) postponeEnterTransition() view.doOnPreDraw { startPostponedEnterTransition() } + enterTransition = MaterialFadeThrough().apply { + addTarget(binding.recyclerView) + } mainActivity.setSupportActionBar(binding.toolbar) mainActivity.supportActionBar?.title = null initLayoutManager() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt index efde47b4..ab07dd73 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt @@ -72,6 +72,7 @@ import com.afollestad.materialcab.createCab import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.snackbar.Snackbar +import com.google.android.material.transition.MaterialFadeThrough import com.google.android.material.transition.MaterialSharedAxis import java.io.* import java.lang.ref.WeakReference @@ -106,6 +107,9 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), mainActivity.addMusicServiceEventListener(libraryViewModel) mainActivity.setSupportActionBar(binding.toolbar) mainActivity.supportActionBar?.title = null + enterTransition = MaterialFadeThrough().apply { + addTarget(binding.recyclerView) + } setUpBreadCrumbs() setUpRecyclerView() setUpAdapter() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt index 1be42655..160b91f3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt @@ -42,6 +42,7 @@ import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.util.PreferenceUtil import com.google.android.gms.cast.framework.CastButtonFactory import com.google.android.material.shape.MaterialShapeDrawable +import com.google.android.material.transition.MaterialFadeThrough import com.google.android.material.transition.MaterialSharedAxis class HomeFragment : @@ -58,6 +59,10 @@ class HomeFragment : setupListeners() binding.titleWelcome.text = String.format("%s", PreferenceUtil.userName) + enterTransition = MaterialFadeThrough().apply { + addTarget(binding.contentContainer) + } + val homeAdapter = HomeAdapter(mainActivity) binding.recyclerView.apply { layoutManager = LinearLayoutManager(mainActivity) diff --git a/app/src/main/res/animator/nav_default_enter_anim.xml b/app/src/main/res/animator/nav_default_enter_anim.xml deleted file mode 100644 index c8663ea4..00000000 --- a/app/src/main/res/animator/nav_default_enter_anim.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/animator/nav_default_exit_anim.xml b/app/src/main/res/animator/nav_default_exit_anim.xml deleted file mode 100644 index 079bd11a..00000000 --- a/app/src/main/res/animator/nav_default_exit_anim.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/animator/nav_default_pop_enter_anim.xml b/app/src/main/res/animator/nav_default_pop_enter_anim.xml deleted file mode 100644 index c8663ea4..00000000 --- a/app/src/main/res/animator/nav_default_pop_enter_anim.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/animator/nav_default_pop_exit_anim.xml b/app/src/main/res/animator/nav_default_pop_exit_anim.xml deleted file mode 100644 index 079bd11a..00000000 --- a/app/src/main/res/animator/nav_default_pop_exit_anim.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_banner_home.xml b/app/src/main/res/layout-land/fragment_banner_home.xml index 44cc64f8..44a24453 100644 --- a/app/src/main/res/layout-land/fragment_banner_home.xml +++ b/app/src/main/res/layout-land/fragment_banner_home.xml @@ -16,8 +16,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true" - android:transitionGroup="true"> + android:fitsSystemWindows="true"> + android:transitionGroup="true"> + android:fitsSystemWindows="true"> + android:layout_height="wrap_content" + android:transitionGroup="true"> + android:fitsSystemWindows="true"> + android:transitionGroup="true"> + android:fitsSystemWindows="true"> + android:layout_height="wrap_content" + android:transitionGroup="true"> + android:fitsSystemWindows="true"> + tools:listitem="@layout/item_list" + android:transitionGroup="true"/>