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

View file

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

View file

@ -1,9 +1,12 @@
package code.name.monkey.retromusic.extensions
import androidx.core.view.WindowInsetsCompat
import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.PreferenceUtil
fun WindowInsetsCompat?.safeGetBottomInsets(): Int {
// Get Navbar heights if insets are null
return (this?.getInsets(WindowInsetsCompat.Type.systemBars())?.bottom ?: RetroUtil.getNavigationBarHeight())
return if (PreferenceUtil.isFullScreenMode) {
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.isVisible
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.RecyclerView
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.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
@ -65,6 +67,7 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
initAdapter()
setUpRecyclerView()
setupToolbar()
binding.shuffleButton.fitsSystemWindows = PreferenceUtil.isFullScreenMode
// Add listeners when shuffle is visible
if (isShuffleVisible) {
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.retromusic.util.PreferenceUtil
import com.google.android.material.bottomnavigation.BottomNavigationView
import java.lang.RuntimeException
class BottomNavigationBarTinted @JvmOverloads constructor(
context: Context,
@ -31,6 +32,15 @@ class BottomNavigationBarTinted @JvmOverloads constructor(
) : BottomNavigationView(context, attrs, defStyleAttr) {
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
if (!PreferenceUtil.materialYou) {

View file

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