From b2e1ab2128e40062f696bc4c0469e7edeb9b99e0 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Sat, 15 Jan 2022 15:07:11 +0530 Subject: [PATCH] Added Collapsing appbar to library tabs with an option to switch back to simple appbar --- .../code/name/monkey/retromusic/Constants.kt | 1 + .../retromusic/activities/MainActivity.kt | 2 +- .../fragments/base/AbsRecyclerViewFragment.kt | 22 +++---- .../fragments/other/PlayingQueueRVFragment.kt | 2 +- .../monkey/retromusic/util/PreferenceUtil.kt | 12 +++- .../retromusic/views/TopAppBarLayout.kt | 59 +++++++++++++++++++ .../res/layout/collapsing_appbar_layout.xml | 29 +++++++++ .../res/layout/fragment_main_recycler.xml | 31 +--------- .../main/res/layout/simple_appbar_layout.xml | 25 ++++++++ app/src/main/res/values/arrays.xml | 11 ++++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/pref_ui.xml | 10 ++++ 12 files changed, 159 insertions(+), 46 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/views/TopAppBarLayout.kt create mode 100644 app/src/main/res/layout/collapsing_appbar_layout.xml create mode 100644 app/src/main/res/layout/simple_appbar_layout.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/Constants.kt b/app/src/main/java/code/name/monkey/retromusic/Constants.kt index 29e165973..0cc842c2b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt +++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt @@ -158,3 +158,4 @@ const val LYRICS_TYPE = "lyrics_type" const val PLAYBACK_SPEED = "playback_speed" const val PLAYBACK_PITCH = "playback_pitch" const val CUSTOM_FONT = "custom_font" +const val APPBAR_MODE = "appbar_mode" 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 3f9b3d8df..1648cd154 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 @@ -147,7 +147,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener { } override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { - if (key == GENERAL_THEME || key == MATERIAL_YOU || key == BLACK_THEME || key == ADAPTIVE_COLOR_APP || key == USER_NAME || key == TOGGLE_FULL_SCREEN || key == TOGGLE_VOLUME || key == ROUND_CORNERS || key == CAROUSEL_EFFECT || key == NOW_PLAYING_SCREEN_ID || key == TOGGLE_GENRE || key == BANNER_IMAGE_PATH || key == PROFILE_IMAGE_PATH || key == CIRCULAR_ALBUM_ART || key == KEEP_SCREEN_ON || key == TOGGLE_SEPARATE_LINE || key == TOGGLE_HOME_BANNER || key == TOGGLE_ADD_CONTROLS || key == ALBUM_COVER_STYLE || key == HOME_ARTIST_GRID_STYLE || key == ALBUM_COVER_TRANSFORM || key == DESATURATED_COLOR || key == EXTRA_SONG_INFO || key == TAB_TEXT_MODE || key == LANGUAGE_NAME || key == LIBRARY_CATEGORIES || key == CUSTOM_FONT) { + if (key == GENERAL_THEME || key == MATERIAL_YOU || key == BLACK_THEME || key == ADAPTIVE_COLOR_APP || key == USER_NAME || key == TOGGLE_FULL_SCREEN || key == TOGGLE_VOLUME || key == ROUND_CORNERS || key == CAROUSEL_EFFECT || key == NOW_PLAYING_SCREEN_ID || key == TOGGLE_GENRE || key == BANNER_IMAGE_PATH || key == PROFILE_IMAGE_PATH || key == CIRCULAR_ALBUM_ART || key == KEEP_SCREEN_ON || key == TOGGLE_SEPARATE_LINE || key == TOGGLE_HOME_BANNER || key == TOGGLE_ADD_CONTROLS || key == ALBUM_COVER_STYLE || key == HOME_ARTIST_GRID_STYLE || key == ALBUM_COVER_TRANSFORM || key == DESATURATED_COLOR || key == EXTRA_SONG_INFO || key == TAB_TEXT_MODE || key == LANGUAGE_NAME || key == LIBRARY_CATEGORIES || key == CUSTOM_FONT|| key == APPBAR_MODE) { postRecreate() } } 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 d60685a15..166555a85 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 @@ -32,12 +32,10 @@ import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog import code.name.monkey.retromusic.dialogs.ImportPlaylistDialog import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.dip -import code.name.monkey.retromusic.extensions.drawNextToNavbar import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.IScrollHelper import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ThemedFastScroller.create -import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.transition.MaterialFadeThrough import me.zhanghai.android.fastscroll.FastScroller import me.zhanghai.android.fastscroll.FastScrollerBuilder @@ -59,7 +57,7 @@ abstract class AbsRecyclerViewFragment, LM : Recycle view.doOnPreDraw { startPostponedEnterTransition() } enterTransition = MaterialFadeThrough().addTarget(binding.recyclerView) reenterTransition = MaterialFadeThrough().addTarget(binding.recyclerView) - mainActivity.setSupportActionBar(binding.toolbar) + mainActivity.setSupportActionBar(toolbar) mainActivity.supportActionBar?.title = null initLayoutManager() initAdapter() @@ -98,12 +96,10 @@ abstract class AbsRecyclerViewFragment, LM : Recycle open fun onShuffleClicked() { } - fun toolbar(): Toolbar { - return binding.toolbar - } + val toolbar: Toolbar get() = binding.appBarLayout.toolbar private fun setupToolbar() { - binding.toolbar.setNavigationOnClickListener { + toolbar.setNavigationOnClickListener { findNavController().navigate( R.id.action_search, null, @@ -111,10 +107,8 @@ abstract class AbsRecyclerViewFragment, LM : Recycle ) } val appName = resources.getString(titleRes) - binding.appNameText.text = appName - binding.toolbarContainer.drawNextToNavbar() - binding.appBarLayout.statusBarForeground = - MaterialShapeDrawable.createWithElevationOverlay(requireContext()) + binding.appBarLayout.title = appName + //toolbarContainer.drawNextToNavbar() } abstract val titleRes: Int @@ -208,7 +202,7 @@ abstract class AbsRecyclerViewFragment, LM : Recycle override fun onPrepareOptionsMenu(menu: Menu) { super.onPrepareOptionsMenu(menu) - ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar) + ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), toolbar) } override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { @@ -216,9 +210,9 @@ abstract class AbsRecyclerViewFragment, LM : Recycle inflater.inflate(R.menu.menu_main, menu) ToolbarContentTintHelper.handleOnCreateOptionsMenu( requireContext(), - binding.toolbar, + toolbar, menu, - ATHToolbarActivity.getToolbarBackgroundColor(binding.toolbar) + ATHToolbarActivity.getToolbarBackgroundColor(toolbar) ) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/PlayingQueueRVFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/PlayingQueueRVFragment.kt index dd17bddee..cc169e940 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/PlayingQueueRVFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/PlayingQueueRVFragment.kt @@ -51,7 +51,7 @@ class PlayingQueueRVFragment : AbsRecyclerViewFragment + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_recycler.xml b/app/src/main/res/layout/fragment_main_recycler.xml index 0a240ed43..500288402 100644 --- a/app/src/main/res/layout/fragment_main_recycler.xml +++ b/app/src/main/res/layout/fragment_main_recycler.xml @@ -6,37 +6,12 @@ android:layout_height="match_parent" android:fitsSystemWindows="true"> - - - - - - - - - - + style="?appBarLayoutStyle" + android:fitsSystemWindows="true" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0db4d540d..cf30c509f 100755 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -50,6 +50,16 @@ @string/unlabeled + + @string/collapsing + @string/simple + + + + 0 + 1 + + @string/light_theme_name @string/dark_theme_name @@ -203,4 +213,5 @@ ur vi + Collapsing \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7fe61f6d7..0725a5801 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -532,4 +532,5 @@ You will be forwarded to the issue tracker website. Your account data is only used for authentication. New Music Mix + App bar mode diff --git a/app/src/main/res/xml/pref_ui.xml b/app/src/main/res/xml/pref_ui.xml index fba7e68c8..be466eb0f 100644 --- a/app/src/main/res/xml/pref_ui.xml +++ b/app/src/main/res/xml/pref_ui.xml @@ -69,6 +69,16 @@ android:negativeButtonText="@null" android:positiveButtonText="@null" android:title="@string/pref_title_tab_text_mode" /> + +