From c2647b9160112ba5ccf1df1dfc5b98f6e6c437e5 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Wed, 13 Oct 2021 13:08:25 +0530 Subject: [PATCH] Fixed bottom sheet for Immersive mode --- .../base/AbsSlidingMusicPanelActivity.kt | 31 +++++++++---------- .../retromusic/extensions/InsetsExtensions.kt | 7 +++++ .../retromusic/extensions/ViewExtensions.kt | 5 +-- .../res/layout/sliding_music_panel_layout.xml | 9 ------ app/src/main/res/values/styles.xml | 1 + 5 files changed, 25 insertions(+), 28 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt 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 c6e67eb6..192c4a65 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 @@ -14,17 +14,16 @@ */ package code.name.monkey.retromusic.activities.base -import android.graphics.Color import android.os.Bundle import android.view.View import android.view.ViewGroup import android.view.ViewTreeObserver import android.widget.FrameLayout import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.commit -import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.retromusic.R import code.name.monkey.retromusic.RetroBottomSheetBehavior import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding @@ -55,7 +54,6 @@ import code.name.monkey.retromusic.fragments.queue.PlayingQueueFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.CategoryInfo import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.RetroUtil import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomsheet.BottomSheetBehavior.* import org.koin.androidx.viewmodel.ext.android.viewModel @@ -66,6 +64,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { var fromNotification: Boolean = false } + private var windowInsets: WindowInsetsCompat? = null protected val libraryViewModel by viewModel() private lateinit var bottomSheetBehavior: RetroBottomSheetBehavior private var playerFragment: AbsPlayerFragment? = null @@ -81,8 +80,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { override fun onSlide(bottomSheet: View, slideOffset: Float) { setMiniPlayerAlphaProgress(slideOffset) - binding.dimBackground.show() - binding.dimBackground.alpha = slideOffset } override fun onStateChanged(bottomSheet: View, newState: Int) { @@ -92,7 +89,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { } STATE_COLLAPSED -> { onPanelCollapsed() - binding.dimBackground.hide() if (fromNotification) { hideBottomBar(MusicPlayerRemote.playingQueue.isEmpty()) fromNotification = false @@ -117,17 +113,16 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { super.onCreate(savedInstanceState) binding = createContentView() setContentView(binding.root) + ViewCompat.setOnApplyWindowInsetsListener( + binding.root + ) { _, insets -> + windowInsets = insets + insets + } binding.bottomNavigationView.drawAboveNavBarWithPadding() chooseFragmentForTheme() setupSlidingUpPanel() setupBottomSheet() - - val themeColor = resolveColor(android.R.attr.windowBackground, Color.GRAY) - binding.dimBackground.setBackgroundColor(ColorUtil.withAlpha(themeColor, 0.5f)) - binding.dimBackground.setOnClickListener { - println("dimBackground") - collapsePanel() - } } private fun setupBottomSheet() { @@ -291,13 +286,15 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { } fun hideBottomBar(hide: Boolean) { - val heightOfBar = RetroUtil.getNavigationBarHeight() + - if (MusicPlayerRemote.isCasting) dip(R.dimen.cast_mini_player_height) else dip(R.dimen.mini_player_height) + val heightOfBar = + windowInsets.safeGetBottomInsets() + + if (MusicPlayerRemote.isCasting) dip(R.dimen.cast_mini_player_height) else dip(R.dimen.mini_player_height) val heightOfBarWithTabs = heightOfBar + dip(R.dimen.bottom_nav_height) val isVisible = binding.bottomNavigationView.isVisible if (hide) { bottomSheetBehavior.isHideable = true bottomSheetBehavior.peekHeight = 0 + bottomSheetBehavior.state = STATE_HIDDEN libraryViewModel.setFabMargin(if (isVisible) dip(R.dimen.bottom_nav_height) else 0) ViewCompat.setElevation(binding.slidingPanel, 0f) ViewCompat.setElevation(binding.bottomNavigationView, 10f) @@ -312,11 +309,11 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { if (bottomSheetBehavior.state != STATE_EXPANDED) getBottomNavigationView().translateYAnimate(0F) bottomSheetBehavior.peekHeightAnimate(heightOfBarWithTabs) - libraryViewModel.setFabMargin(heightOfBarWithTabs - RetroUtil.getNavigationBarHeight()) + libraryViewModel.setFabMargin(heightOfBarWithTabs - windowInsets.safeGetBottomInsets()) } else { println("Details") bottomSheetBehavior.peekHeight = heightOfBar - libraryViewModel.setFabMargin(heightOfBar - RetroUtil.getNavigationBarHeight()) + libraryViewModel.setFabMargin(heightOfBar - windowInsets.safeGetBottomInsets()) } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt new file mode 100644 index 00000000..48a60554 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/InsetsExtensions.kt @@ -0,0 +1,7 @@ +package code.name.monkey.retromusic.extensions + +import androidx.core.view.WindowInsetsCompat + +fun WindowInsetsCompat?.safeGetBottomInsets(): Int { + return this?.getInsets(WindowInsetsCompat.Type.navigationBars())?.bottom ?: 0 +} diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt index 1ea708d7..026d7b34 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt @@ -28,6 +28,7 @@ import androidx.core.animation.doOnEnd import androidx.core.animation.doOnStart import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsCompat.Type.navigationBars import androidx.core.view.updateLayoutParams import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.TintHelper @@ -141,7 +142,7 @@ fun View.drawAboveNavBar() { ) { v: View, insets: WindowInsetsCompat -> v.updateLayoutParams { bottomMargin = - insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom + insets.getInsets(navigationBars()).bottom } insets } @@ -154,7 +155,7 @@ fun View.drawAboveNavBarWithPadding() { ViewCompat.setOnApplyWindowInsetsListener( (this) ) { v: View, insets: WindowInsetsCompat -> - val navBarHeight = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom + val navBarHeight = insets.getInsets(navigationBars()).bottom v.updatePadding(bottom = navBarHeight) insets } diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml index 80bc7b2a..53048a66 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -16,14 +16,6 @@ app:defaultNavHost="true" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" /> - - @empty ?attr/bottomSheetTint + true