diff --git a/app/build.gradle b/app/build.gradle index 1598ef34a..c1a1beb57 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -184,8 +184,6 @@ dependencies { implementation 'com.github.AdrienPoupa:jaudiotagger:2.2.3' - implementation 'com.github.ologe:scroll-helper:2.0.0-beta01' - implementation 'com.anjlab.android.iab.v3:library:1.1.0' implementation 'com.r0adkll:slidableactivity:2.1.0' implementation 'com.heinrichreimersoftware:material-intro:1.6' diff --git a/app/src/main/java/code/name/monkey/retromusic/RetroScrollHelper.kt b/app/src/main/java/code/name/monkey/retromusic/RetroScrollHelper.kt deleted file mode 100644 index b7fa8031d..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/RetroScrollHelper.kt +++ /dev/null @@ -1,67 +0,0 @@ -package code.name.monkey.retromusic - -import android.view.View -import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentActivity -import androidx.recyclerview.widget.RecyclerView -import androidx.viewpager2.widget.ViewPager2 -import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment -import dev.olog.scrollhelper.ScrollHelper - -class RetroScrollHelper( - private val activity: FragmentActivity -) : ScrollHelper(activity, - true, - false // TODO when true, scrolls both bottomsheet and bottom navigation -) { - - private val skipFragment = listOf( - PlayerFragment::class.java.name - ) - - // TODO every fragment has to have it's unique tag in order to work correctly - // here you can decide what fragment will be processed by the library - // probably you want to skip player fragments, ecc .. - override fun shouldSkipFragment(fragment: Fragment): Boolean { - return fragment::class.java.name in skipFragment - } - - override fun findBottomNavigation(): View? { - return activity.findViewById(R.id.bottomNavigationView) - } - - override fun findBottomSheet(): View? { - return activity.findViewById(R.id.slidingPanel) - } - - override fun findFab(fragment: Fragment): View? { - return null - } - - override fun findRecyclerView(fragment: Fragment): RecyclerView? { - return fragment.requireView().findViewById(R.id.recyclerView) - } - - override fun findToolbar(fragment: Fragment): View? { - return fragment.requireActivity().findViewById(R.id.toolbarContainer) - } - - override fun findTabLayout(fragment: Fragment): View? { - return null - } - - override fun findViewPager(fragment: Fragment): ViewPager2? { - return null - } - - // TODO override this if you want to apply custom padding - override fun updateRecyclerViewPadding( - fragment: Fragment, - recyclerView: RecyclerView, - topPadding: Int, - bottomPadding: Int - ) { - super.updateRecyclerViewPadding(fragment, recyclerView, topPadding, bottomPadding) - } - -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java index 12a276f6c..34d39e445 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.java @@ -55,7 +55,6 @@ import java.util.List; import code.name.monkey.appthemehelper.util.ATHUtil; import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper; import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.RetroScrollHelper; import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity; import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog; import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment; @@ -84,7 +83,6 @@ import code.name.monkey.retromusic.util.NavigationUtil; import code.name.monkey.retromusic.util.PreferenceUtil; import code.name.monkey.retromusic.util.RetroColorUtil; import code.name.monkey.retromusic.util.RetroUtil; -import dev.olog.scrollhelper.ScrollHelper; /** * Created by hemanths on 2020-02-19. @@ -121,9 +119,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity private Toolbar mToolbar; private MaterialCardView mToolbarContainer; - @SuppressWarnings("FieldCanBeLocal") - private ScrollHelper scrollHelper; - @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { setDrawUnderStatusBar(); @@ -156,8 +151,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity checkShowChangelog(); AppRater.appLaunched(this); setupToolbar(); - - scrollHelper = new RetroScrollHelper(this); } @Override diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 7f92a4f62..3a84f55bc 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -111,14 +111,10 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), } } - override fun onPause() { - super.onPause() - bottomSheetBehavior.removeBottomSheetCallback(bottomSheetCallbackList) - } - override fun onDestroy() { super.onDestroy() - navigationBarColorAnimator?.cancel() // just in case + bottomSheetBehavior.removeBottomSheetCallback(bottomSheetCallbackList) + if (navigationBarColorAnimator != null) navigationBarColorAnimator?.cancel() // just in case } protected fun wrapSlidingMusicPanel(@LayoutRes resId: Int): View { @@ -146,6 +142,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), // necessary to make the views below clickable miniPlayerFragment?.view?.visibility = if (alpha == 0f) View.GONE else View.VISIBLE + bottomNavigationView.translationY = progress * 500 //bottomNavigationView.alpha = alpha } @@ -220,8 +217,8 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), } } - fun setBottomBarVisibility(visibility: Int) { - bottomNavigationView.visibility = visibility + fun setBottomBarVisibility(gone: Int) { + bottomNavigationView.visibility = gone hideBottomBar(false) } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ContextExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ContextExtensions.kt deleted file mode 100644 index 297e4d59a..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ContextExtensions.kt +++ /dev/null @@ -1,10 +0,0 @@ -package code.name.monkey.retromusic.extensions - -import android.content.Context -import androidx.annotation.DimenRes - -@Suppress("NOTHING_TO_INLINE") -inline fun Context.dip(value: Int): Int = (value * resources.displayMetrics.density).toInt() - -@Suppress("NOTHING_TO_INLINE") -inline fun Context.dimen(@DimenRes resource: Int): Int = resources.getDimensionPixelSize(resource) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt index bd7b45a8e..2ef27d5f5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt @@ -8,13 +8,17 @@ import androidx.annotation.NonNull import androidx.annotation.StringRes import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.util.DensityUtil import code.name.monkey.retromusic.util.ThemedFastScroller.create +import code.name.monkey.retromusic.views.ScrollingViewOnApplyWindowInsetsListener +import com.google.android.material.appbar.AppBarLayout import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.* import me.zhanghai.android.fastscroll.FastScroller import me.zhanghai.android.fastscroll.FastScrollerBuilder abstract class AbsLibraryPagerRecyclerViewFragment, LM : RecyclerView.LayoutManager> : - AbsLibraryPagerFragment() { + AbsLibraryPagerFragment(), AppBarLayout.OnOffsetChangedListener { protected var adapter: A? = null protected var layoutManager: LM? = null @@ -27,6 +31,7 @@ abstract class AbsLibraryPagerRecyclerViewFragment, override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + mainActivity.addOnAppBarOffsetChangedListener(this) initLayoutManager() initAdapter() setUpRecyclerView() @@ -36,6 +41,13 @@ abstract class AbsLibraryPagerRecyclerViewFragment, recyclerView.layoutManager = layoutManager recyclerView.adapter = adapter val fastScroller = create(recyclerView) + recyclerView.setOnApplyWindowInsetsListener( + ScrollingViewOnApplyWindowInsetsListener( + recyclerView, + fastScroller + ) + ) + checkForPadding() } protected open fun createFastScroller(recyclerView: RecyclerView): FastScroller { @@ -48,6 +60,7 @@ abstract class AbsLibraryPagerRecyclerViewFragment, override fun onChanged() { super.onChanged() checkIsEmpty() + checkForPadding() } }) } @@ -65,6 +78,18 @@ abstract class AbsLibraryPagerRecyclerViewFragment, empty.visibility = if (adapter!!.itemCount == 0) View.VISIBLE else View.GONE } + private fun checkForPadding() { + val itemCount: Int = adapter?.itemCount ?: 0 + val params = container.layoutParams as ViewGroup.MarginLayoutParams + if (itemCount > 0 && MusicPlayerRemote.playingQueue.isNotEmpty()) { + val height = DensityUtil.dip2px(requireContext(), 104f) + params.bottomMargin = height + } else { + val height = DensityUtil.dip2px(requireContext(), 52f) + params.bottomMargin = height + } + } + private fun initLayoutManager() { layoutManager = createLayoutManager() } @@ -74,6 +99,25 @@ abstract class AbsLibraryPagerRecyclerViewFragment, @NonNull protected abstract fun createAdapter(): A + override fun onOffsetChanged(p0: AppBarLayout?, i: Int) { + container.setPadding( + container.paddingLeft, + container.paddingTop, + container.paddingRight, + mainActivity.totalAppBarScrollingRange + i + ) + } + + override fun onQueueChanged() { + super.onQueueChanged() + checkForPadding() + } + + override fun onServiceConnected() { + super.onServiceConnected() + checkForPadding() + } + protected fun invalidateLayoutManager() { initLayoutManager() recyclerView.layoutManager = layoutManager @@ -85,6 +129,11 @@ abstract class AbsLibraryPagerRecyclerViewFragment, recyclerView.adapter = adapter } + override fun onDestroyView() { + super.onDestroyView() + mainActivity.removeOnAppBarOffsetChangedListener(this) + } + fun recyclerView(): RecyclerView { return recyclerView } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt index d7b541b29..32c374d7e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/AlbumsFragment.kt @@ -12,7 +12,6 @@ import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.mvp.presenter.AlbumsPresenter import code.name.monkey.retromusic.mvp.presenter.AlbumsView import code.name.monkey.retromusic.util.PreferenceUtil -import dev.olog.scrollhelper.layoutmanagers.OverScrollGridLayoutManager import javax.inject.Inject class AlbumsFragment : @@ -52,7 +51,7 @@ class AlbumsFragment : get() = R.string.no_albums override fun createLayoutManager(): GridLayoutManager { - return OverScrollGridLayoutManager(requireActivity(), getGridSize()) + return GridLayoutManager(requireActivity(), getGridSize()) } override fun createAdapter(): AlbumAdapter { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt index adb055946..6f4ded1cf 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt @@ -12,7 +12,6 @@ import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.mvp.presenter.ArtistsPresenter import code.name.monkey.retromusic.mvp.presenter.ArtistsView import code.name.monkey.retromusic.util.PreferenceUtil -import dev.olog.scrollhelper.layoutmanagers.OverScrollGridLayoutManager import javax.inject.Inject class ArtistsFragment : @@ -64,7 +63,7 @@ class ArtistsFragment : } override fun createLayoutManager(): GridLayoutManager { - return OverScrollGridLayoutManager(requireActivity(), getGridSize()) + return GridLayoutManager(requireActivity(), getGridSize()) } override fun createAdapter(): ArtistAdapter { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/BannerHomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/BannerHomeFragment.kt index 10fb58daf..fc87c4eaa 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/BannerHomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/BannerHomeFragment.kt @@ -42,7 +42,6 @@ import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy -import dev.olog.scrollhelper.layoutmanagers.OverScrollLinearLayoutManager import kotlinx.android.synthetic.main.abs_playlists.* import kotlinx.android.synthetic.main.fragment_banner_home.* import kotlinx.android.synthetic.main.home_content.* @@ -148,7 +147,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba homeAdapter = HomeAdapter(mainActivity, displayMetrics) recyclerView.apply { - layoutManager = OverScrollLinearLayoutManager(mainActivity) + layoutManager = LinearLayoutManager(mainActivity) adapter = homeAdapter } homePresenter.attachView(this) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java index a912731fb..ab2daabce 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java @@ -74,7 +74,6 @@ import code.name.monkey.retromusic.util.RetroColorUtil; import code.name.monkey.retromusic.util.ThemedFastScroller; import code.name.monkey.retromusic.views.BreadCrumbLayout; import code.name.monkey.retromusic.views.ScrollingViewOnApplyWindowInsetsListener; -import dev.olog.scrollhelper.layoutmanagers.OverScrollLinearLayoutManager; import me.zhanghai.android.fastscroll.FastScroller; public class FoldersFragment extends AbsMainActivityFragment implements @@ -479,7 +478,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements } private void setUpRecyclerView() { - recyclerView.setLayoutManager(new OverScrollLinearLayoutManager(getActivity())); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); FastScroller fastScroller = ThemedFastScroller.INSTANCE.create(recyclerView); recyclerView.setOnApplyWindowInsetsListener( new ScrollingViewOnApplyWindowInsetsListener(recyclerView, fastScroller)); diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt index 548c13309..bf0dc49cd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt @@ -25,7 +25,6 @@ import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.model.Genre import code.name.monkey.retromusic.mvp.presenter.GenresPresenter import code.name.monkey.retromusic.mvp.presenter.GenresView -import dev.olog.scrollhelper.layoutmanagers.OverScrollLinearLayoutManager import javax.inject.Inject class GenresFragment : AbsLibraryPagerRecyclerViewFragment(), @@ -43,7 +42,7 @@ class GenresFragment : AbsLibraryPagerRecyclerViewFragment 0) { + result = r.getDimensionPixelSize(resourceId); + } + return result; + } + + private void init(Context context) { + + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), getStatusBarHeight(getResources())); + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt deleted file mode 100644 index 9a5833f79..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt +++ /dev/null @@ -1,30 +0,0 @@ -package code.name.monkey.retromusic.views - -import android.content.Context -import android.util.AttributeSet -import android.view.View - -class StatusBarView( - context: Context, - attrs: AttributeSet -) : View(context, attrs) { - - override fun onAttachedToWindow() { - super.onAttachedToWindow() - if (isInEditMode){ - return - } - setOnApplyWindowInsetsListener { _, insets -> - val height = insets?.systemWindowInsetTop ?: 0 - setHeight(height) - insets - } - } - - private fun setHeight(px: Int) { - val params = layoutParams ?: return - params.height = px - layoutParams = params - } - -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_content.xml b/app/src/main/res/layout/activity_main_content.xml index 66c852744..b3e78f41e 100644 --- a/app/src/main/res/layout/activity_main_content.xml +++ b/app/src/main/res/layout/activity_main_content.xml @@ -1,71 +1,79 @@ - - - - + android:background="?colorSurface" + android:orientation="vertical"> - - + android:elevation="0dp" + tools:ignore="UnusedAttribute"> + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - \ No newline at end of file + android:layout_height="match_parent" + app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_banner_home.xml b/app/src/main/res/layout/fragment_banner_home.xml index 250d99db1..5d571b410 100644 --- a/app/src/main/res/layout/fragment_banner_home.xml +++ b/app/src/main/res/layout/fragment_banner_home.xml @@ -17,7 +17,6 @@ android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/toolbar_height" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"> - -