Make navigation bar match color
This commit is contained in:
@@ -2,6 +2,9 @@ package gq.kirmanak.mealient.extensions
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
|
import android.content.res.Configuration.UI_MODE_NIGHT_MASK
|
||||||
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
|
import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
@@ -115,3 +118,10 @@ fun View.hideKeyboard() {
|
|||||||
val imm = context.getSystemService<InputMethodManager>()
|
val imm = context.getSystemService<InputMethodManager>()
|
||||||
imm?.hideSoftInputFromWindow(windowToken, 0)
|
imm?.hideSoftInputFromWindow(windowToken, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.isDarkThemeOn(): Boolean {
|
||||||
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
|
||||||
|
resources.configuration.isNightModeActive
|
||||||
|
else
|
||||||
|
resources.configuration.uiMode and UI_MODE_NIGHT_MASK == UI_MODE_NIGHT_YES
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.appcompat.widget.SearchView.OnQueryTextListener
|
import androidx.appcompat.widget.SearchView.OnQueryTextListener
|
||||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||||
|
import androidx.core.view.WindowInsetsControllerCompat
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavDirections
|
import androidx.navigation.NavDirections
|
||||||
@@ -19,6 +20,7 @@ import gq.kirmanak.mealient.NavGraphDirections.Companion.actionGlobalBaseURLFrag
|
|||||||
import gq.kirmanak.mealient.NavGraphDirections.Companion.actionGlobalRecipesListFragment
|
import gq.kirmanak.mealient.NavGraphDirections.Companion.actionGlobalRecipesListFragment
|
||||||
import gq.kirmanak.mealient.R
|
import gq.kirmanak.mealient.R
|
||||||
import gq.kirmanak.mealient.databinding.MainActivityBinding
|
import gq.kirmanak.mealient.databinding.MainActivityBinding
|
||||||
|
import gq.kirmanak.mealient.extensions.isDarkThemeOn
|
||||||
import gq.kirmanak.mealient.extensions.observeOnce
|
import gq.kirmanak.mealient.extensions.observeOnce
|
||||||
import gq.kirmanak.mealient.logging.Logger
|
import gq.kirmanak.mealient.logging.Logger
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -40,24 +42,28 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
|
|||||||
logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" }
|
logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" }
|
||||||
splashScreen.setKeepOnScreenCondition { viewModel.startDestination.value == null }
|
splashScreen.setKeepOnScreenCondition { viewModel.startDestination.value == null }
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
configureToolbar()
|
setupUi()
|
||||||
configureNavGraph()
|
configureNavGraph()
|
||||||
viewModel.uiStateLive.observe(this, ::onUiStateChange)
|
|
||||||
binding.navigationView.setNavigationItemSelectedListener(::onNavigationItemSelected)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun configureNavGraph() {
|
private fun configureNavGraph() {
|
||||||
logger.v { "configureNavGraph() called" }
|
logger.v { "configureNavGraph() called" }
|
||||||
viewModel.startDestination.observeOnce(this) {
|
viewModel.startDestination.observeOnce(this) {
|
||||||
logger.d { "configureNavGraph: received destination" }
|
logger.d { "configureNavGraph: received destination" }
|
||||||
val graph = navController.navInflater.inflate(R.navigation.nav_graph)
|
val controller = navController
|
||||||
|
val graph = controller.navInflater.inflate(R.navigation.nav_graph)
|
||||||
graph.setStartDestination(it)
|
graph.setStartDestination(it)
|
||||||
navController.setGraph(graph, intent.extras)
|
controller.setGraph(graph, intent.extras)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun configureToolbar() {
|
private fun setupUi() {
|
||||||
binding.toolbar.setNavigationOnClickListener { binding.drawer.open() }
|
binding.toolbar.setNavigationOnClickListener { binding.drawer.open() }
|
||||||
|
binding.navigationView.setNavigationItemSelectedListener(::onNavigationItemSelected)
|
||||||
|
val insetsController = WindowInsetsControllerCompat(window, window.decorView)
|
||||||
|
insetsController.isAppearanceLightNavigationBars = !isDarkThemeOn()
|
||||||
|
insetsController.isAppearanceLightStatusBars = !isDarkThemeOn()
|
||||||
|
viewModel.uiStateLive.observe(this, ::onUiStateChange)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
|
private fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
|
||||||
|
|||||||
@@ -6,11 +6,4 @@
|
|||||||
<item name="windowSplashScreenBackground">@android:color/black</item>
|
<item name="windowSplashScreenBackground">@android:color/black</item>
|
||||||
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_screen</item>
|
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_screen</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme" parent="Theme.Material3.DynamicColors.Dark">
|
|
||||||
<item name="windowActionBar">false</item>
|
|
||||||
<item name="windowNoTitle">true</item>
|
|
||||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
|
||||||
<item name="android:windowLightStatusBar">false</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -6,10 +6,10 @@
|
|||||||
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_screen</item>
|
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_screen</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme" parent="Theme.Material3.DynamicColors.Light">
|
<style name="AppTheme" parent="Theme.Material3.DynamicColors.DayNight">
|
||||||
<item name="windowActionBar">false</item>
|
<item name="windowActionBar">false</item>
|
||||||
<item name="windowNoTitle">true</item>
|
<item name="windowNoTitle">true</item>
|
||||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
<item name="android:windowLightStatusBar">true</item>
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user