[BottomNavigation] Fixed BottomNavigation for Immersive mode

This commit is contained in:
Prathamesh More 2021-12-24 15:52:55 +05:30
parent e72cffe6ea
commit 444677fe21
6 changed files with 23 additions and 15 deletions

View file

@ -25,10 +25,7 @@ import android.view.ViewTreeObserver
import android.view.animation.PathInterpolator import android.view.animation.PathInterpolator
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.core.animation.doOnEnd import androidx.core.animation.doOnEnd
import androidx.core.view.ViewCompat import androidx.core.view.*
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.commit import androidx.fragment.app.commit
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
@ -139,7 +136,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
windowInsets = insets windowInsets = insets
insets insets
} }
bottomNavigationView.drawAboveSystemBarsWithPadding()
if (RetroUtil.isLandscape()) { if (RetroUtil.isLandscape()) {
binding.slidingPanel.drawAboveSystemBarsWithPadding(true) binding.slidingPanel.drawAboveSystemBarsWithPadding(true)
} }

View file

@ -6,16 +6,14 @@ import android.os.Build
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat import androidx.core.view.*
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.view.isGone
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import code.name.monkey.appthemehelper.ATH import code.name.monkey.appthemehelper.ATH
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil
fun AppCompatActivity.toggleScreenOn() { fun AppCompatActivity.toggleScreenOn() {
if (PreferenceUtil.isScreenOnEnabled) { if (PreferenceUtil.isScreenOnEnabled) {
@ -41,7 +39,6 @@ fun AppCompatActivity.setImmersiveFullscreen() {
fun AppCompatActivity.exitFullscreen() { fun AppCompatActivity.exitFullscreen() {
WindowInsetsControllerCompat(window, window.decorView).apply { WindowInsetsControllerCompat(window, window.decorView).apply {
systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
show(WindowInsetsCompat.Type.systemBars()) show(WindowInsetsCompat.Type.systemBars())
} }
} }

View file

@ -1,9 +1,12 @@
package code.name.monkey.retromusic.extensions package code.name.monkey.retromusic.extensions
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.PreferenceUtil
fun WindowInsetsCompat?.safeGetBottomInsets(): Int { fun WindowInsetsCompat?.safeGetBottomInsets(): Int {
// Get Navbar heights if insets are null return if (PreferenceUtil.isFullScreenMode) {
return (this?.getInsets(WindowInsetsCompat.Type.systemBars())?.bottom ?: RetroUtil.getNavigationBarHeight()) return 0
} else {
this?.getInsets(WindowInsetsCompat.Type.systemBars())?.bottom ?: 0
}
} }

View file

@ -22,6 +22,7 @@ import androidx.appcompat.widget.Toolbar
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import code.name.monkey.appthemehelper.common.ATHToolbarActivity import code.name.monkey.appthemehelper.common.ATHToolbarActivity
@ -35,6 +36,7 @@ import code.name.monkey.retromusic.extensions.dip
import code.name.monkey.retromusic.extensions.drawNextToNavbar import code.name.monkey.retromusic.extensions.drawNextToNavbar
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.interfaces.IScrollHelper import code.name.monkey.retromusic.interfaces.IScrollHelper
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.ThemedFastScroller.create import code.name.monkey.retromusic.util.ThemedFastScroller.create
import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.transition.MaterialFadeThrough import com.google.android.material.transition.MaterialFadeThrough
@ -65,6 +67,7 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
initAdapter() initAdapter()
setUpRecyclerView() setUpRecyclerView()
setupToolbar() setupToolbar()
binding.shuffleButton.fitsSystemWindows = PreferenceUtil.isFullScreenMode
// Add listeners when shuffle is visible // Add listeners when shuffle is visible
if (isShuffleVisible) { if (isShuffleVisible) {
binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {

View file

@ -23,6 +23,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.NavigationViewUtil import code.name.monkey.appthemehelper.util.NavigationViewUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import java.lang.RuntimeException
class BottomNavigationBarTinted @JvmOverloads constructor( class BottomNavigationBarTinted @JvmOverloads constructor(
context: Context, context: Context,
@ -31,6 +32,15 @@ class BottomNavigationBarTinted @JvmOverloads constructor(
) : BottomNavigationView(context, attrs, defStyleAttr) { ) : BottomNavigationView(context, attrs, defStyleAttr) {
init { init {
// If we are in Immersive mode we have to just set empty OnApplyWindowInsetsListener as
// bottom, start, and end padding is always applied (with the help of OnApplyWindowInsetsListener) to
// BottomNavigationView to dodge the system navigation bar (so we basically clear that listener).
if (PreferenceUtil.isFullScreenMode) {
setOnApplyWindowInsetsListener { _, insets ->
insets
}
}
labelVisibilityMode = PreferenceUtil.tabTitleMode labelVisibilityMode = PreferenceUtil.tabTitleMode
if (!PreferenceUtil.materialYou) { if (!PreferenceUtil.materialYou) {

View file

@ -58,6 +58,5 @@
app:itemHorizontalTranslationEnabled="false" app:itemHorizontalTranslationEnabled="false"
app:itemPaddingBottom="8dp" app:itemPaddingBottom="8dp"
app:itemPaddingTop="8dp" app:itemPaddingTop="8dp"
app:menu="@menu/bottom_navigation_main" app:menu="@menu/bottom_navigation_main" />
tools:layout_height="wrap_content" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>