From 81e3fcfd98a696bf4a1d44469b7b057b0d6ea328 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Mon, 31 Oct 2022 20:46:03 +0100 Subject: [PATCH 01/19] Start splash screen API migration --- app/build.gradle.kts | 1 + app/src/main/AndroidManifest.xml | 2 +- .../mealient/extensions/ViewExtensions.kt | 32 ---------- .../mealient/ui/activity/MainActivity.kt | 2 + .../mealient/ui/splash/SplashFragment.kt | 14 +---- .../mealient/ui/splash/SplashViewModel.kt | 2 - app/src/main/res/values/themes.xml | 63 ++++++++++--------- gradle/libs.versions.toml | 3 + 8 files changed, 42 insertions(+), 77 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4970cc6..1025875 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -77,6 +77,7 @@ dependencies { implementation(libs.androidx.navigation.uiKtx) implementation(libs.androidx.coreKtx) + implementation(libs.androidx.splashScreen) implementation(libs.androidx.appcompat) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1d2163d..db9ef8d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" - android:theme="@style/AppTheme" + android:theme="@style/Theme.App.Starting" tools:ignore="UnusedAttribute"> = callback } } -fun Activity.setSystemUiVisibility(isVisible: Boolean, logger: Logger) { - logger.v { "setSystemUiVisibility() called with: isVisible = $isVisible" } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) setSystemUiVisibilityV30(isVisible, logger) - else setSystemUiVisibilityV1(isVisible, logger) -} - -@Suppress("DEPRECATION") -private fun Activity.setSystemUiVisibilityV1(isVisible: Boolean, logger: Logger) { - logger.v { "setSystemUiVisibilityV1() called with: isVisible = $isVisible" } - window.decorView.systemUiVisibility = if (isVisible) 0 else View.SYSTEM_UI_FLAG_FULLSCREEN -} - -@RequiresApi(Build.VERSION_CODES.R) -private fun Activity.setSystemUiVisibilityV30(isVisible: Boolean, logger: Logger) { - logger.v { "setSystemUiVisibilityV30() called with: isVisible = $isVisible" } - val systemBars = WindowInsets.Type.systemBars() - window.insetsController?.apply { if (isVisible) show(systemBars) else hide(systemBars) } - ?: logger.w { "setSystemUiVisibilityV30: insets controller is null" } -} - -fun AppCompatActivity.setActionBarVisibility(isVisible: Boolean, logger: Logger) { - logger.v { "setActionBarVisibility() called with: isVisible = $isVisible" } - supportActionBar?.apply { if (isVisible) show() else hide() } - ?: logger.w { "setActionBarVisibility: action bar is null" } -} - fun TextView.textChangesFlow(logger: Logger): Flow = callbackFlow { logger.v { "textChangesFlow() called" } val textWatcher = doAfterTextChanged { diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index e346641..fc97e32 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -6,6 +6,7 @@ import android.view.MenuItem import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.net.toUri +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.isVisible import androidx.navigation.findNavController import com.google.android.material.shape.CornerFamily @@ -28,6 +29,7 @@ class MainActivity : AppCompatActivity() { lateinit var logger: Logger override fun onCreate(savedInstanceState: Bundle?) { + installSplashScreen() super.onCreate(savedInstanceState) logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" } binding = MainActivityBinding.inflate(layoutInflater) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt index f2978b1..b68a10f 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt @@ -2,20 +2,16 @@ package gq.kirmanak.mealient.ui.splash import android.os.Bundle import android.view.View -import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.navigation.NavDirections import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint -import gq.kirmanak.mealient.R -import gq.kirmanak.mealient.extensions.setActionBarVisibility -import gq.kirmanak.mealient.extensions.setSystemUiVisibility import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject @AndroidEntryPoint -class SplashFragment : Fragment(R.layout.fragment_splash) { +class SplashFragment : Fragment() { private val viewModel by viewModels() @@ -36,18 +32,10 @@ class SplashFragment : Fragment(R.layout.fragment_splash) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) logger.v { "onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState" } - changeFullscreenState(true) } override fun onDestroyView() { super.onDestroyView() logger.v { "onDestroyView() called" } - changeFullscreenState(false) - } - - private fun changeFullscreenState(isFullscreen: Boolean) { - logger.v { "changeFullscreenState() called with: isFullscreen = $isFullscreen" } - (activity as? AppCompatActivity)?.setActionBarVisibility(!isFullscreen, logger) - activity?.setSystemUiVisibility(!isFullscreen, logger) } } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt index 399f860..413ca94 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt @@ -8,7 +8,6 @@ import androidx.navigation.NavDirections import dagger.hilt.android.lifecycle.HiltViewModel import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorage -import kotlinx.coroutines.delay import kotlinx.coroutines.launch import javax.inject.Inject @@ -22,7 +21,6 @@ class SplashViewModel @Inject constructor( init { viewModelScope.launch { - delay(1000) _nextDestination.value = when { !disclaimerStorage.isDisclaimerAccepted() -> SplashFragmentDirections.actionSplashFragmentToDisclaimerFragment() serverInfoRepo.getUrl() == null -> SplashFragmentDirections.actionSplashFragmentToBaseURLFragment() diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index c7ddac7..f190ab3 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,32 +1,37 @@ - + + + \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 718bc8f..31cbf30 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,6 +31,8 @@ appcompat = "1.5.1" contraintLayout = "2.1.4" # https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout swipeRefreshLayout = "1.1.0" +# https://developer.android.com/jetpack/androidx/releases/core +splashScreen = "1.0.0" # https://developer.android.com/jetpack/androidx/releases/lifecycle lifecycle = "2.5.1" # https://github.com/square/retrofit/tags @@ -118,6 +120,7 @@ androidx-coreKtx = { group = "androidx.core", name = "core-ktx", version.ref = " androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } androidx-constraintLayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "contraintLayout" } androidx-swipeRefreshLayout = { group = "androidx.swiperefreshlayout", name = "swiperefreshlayout", version.ref = "swipeRefreshLayout" } +androidx-splashScreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "splashScreen" } androidx-paging-runtimeKtx = { group = "androidx.paging", name = "paging-runtime-ktx", version.ref = "paging" } androidx-paging-commonKtx = { group = "androidx.paging", name = "paging-common-ktx", version.ref = "paging" } From a6a9aef5e2d6c25bf777ee0c8e4722f059184f33 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Mon, 31 Oct 2022 20:57:26 +0100 Subject: [PATCH 02/19] Remove splash fragment --- .../mealient/ui/activity/MainActivity.kt | 22 ++++++++-- .../ui/activity/MainActivityViewModel.kt | 16 ++++++++ .../mealient/ui/splash/SplashFragment.kt | 41 ------------------- .../mealient/ui/splash/SplashViewModel.kt | 31 -------------- app/src/main/res/layout/main_activity.xml | 3 +- app/src/main/res/navigation/nav_graph.xml | 23 +---------- 6 files changed, 37 insertions(+), 99 deletions(-) delete mode 100644 app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt delete mode 100644 app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index fc97e32..9890d3f 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.net.toUri import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.isVisible +import androidx.navigation.NavController import androidx.navigation.findNavController import com.google.android.material.shape.CornerFamily import com.google.android.material.shape.MaterialShapeDrawable @@ -24,6 +25,8 @@ class MainActivity : AppCompatActivity() { private val viewModel by viewModels() private val title: String by lazy { getString(R.string.app_name) } private val uiState: MainActivityUiState get() = viewModel.uiState + private val navController: NavController + get() = findNavController(binding.navHost.id) @Inject lateinit var logger: Logger @@ -34,12 +37,25 @@ class MainActivity : AppCompatActivity() { logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" } binding = MainActivityBinding.inflate(layoutInflater) setContentView(binding.root) + configureToolbar() + configureNavGraph() + viewModel.uiStateLive.observe(this, ::onUiStateChange) + binding.navigationView.setNavigationItemSelectedListener(::onNavigationItemSelected) + } + + private fun configureNavGraph() { + val graph = navController.navInflater.inflate(R.navigation.nav_graph) + viewModel.startDestination.observe(this) { + graph.setStartDestination(it) + navController.setGraph(graph, intent.extras) + } + } + + private fun configureToolbar() { setSupportActionBar(binding.toolbar) binding.toolbar.setNavigationIcon(R.drawable.ic_toolbar) binding.toolbar.setNavigationOnClickListener { binding.drawer.open() } setToolbarRoundCorner() - viewModel.uiStateLive.observe(this, ::onUiStateChange) - binding.navigationView.setNavigationItemSelectedListener(::onNavigationItemSelected) } private fun onNavigationItemSelected(menuItem: MenuItem): Boolean { @@ -104,7 +120,7 @@ class MainActivity : AppCompatActivity() { private fun navigateDeepLink(deepLink: String) { logger.v { "navigateDeepLink() called with: deepLink = $deepLink" } - findNavController(binding.navHost.id).navigate(deepLink.toUri()) + navController.navigate(deepLink.toUri()) } companion object { diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityViewModel.kt index 0a47762..7375832 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivityViewModel.kt @@ -2,7 +2,10 @@ package gq.kirmanak.mealient.ui.activity import androidx.lifecycle.* import dagger.hilt.android.lifecycle.HiltViewModel +import gq.kirmanak.mealient.R import gq.kirmanak.mealient.data.auth.AuthRepo +import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo +import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorage import gq.kirmanak.mealient.logging.Logger import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -13,6 +16,8 @@ import javax.inject.Inject class MainActivityViewModel @Inject constructor( private val authRepo: AuthRepo, private val logger: Logger, + private val disclaimerStorage: DisclaimerStorage, + private val serverInfoRepo: ServerInfoRepo, ) : ViewModel() { private val _uiState = MutableLiveData(MainActivityUiState()) @@ -22,10 +27,21 @@ class MainActivityViewModel @Inject constructor( get() = checkNotNull(_uiState.value) { "UiState must not be null" } private set(value) = _uiState.postValue(value) + private val _startDestination = MutableLiveData() + val startDestination: LiveData = _startDestination + init { authRepo.isAuthorizedFlow .onEach { isAuthorized -> updateUiState { it.copy(isAuthorized = isAuthorized) } } .launchIn(viewModelScope) + + viewModelScope.launch { + _startDestination.value = when { + !disclaimerStorage.isDisclaimerAccepted() -> R.id.disclaimerFragment + serverInfoRepo.getUrl() == null -> R.id.baseURLFragment + else -> R.id.recipesFragment + } + } } fun updateUiState(updater: (MainActivityUiState) -> MainActivityUiState) { diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt deleted file mode 100644 index b68a10f..0000000 --- a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt +++ /dev/null @@ -1,41 +0,0 @@ -package gq.kirmanak.mealient.ui.splash - -import android.os.Bundle -import android.view.View -import androidx.fragment.app.Fragment -import androidx.fragment.app.viewModels -import androidx.navigation.NavDirections -import androidx.navigation.fragment.findNavController -import dagger.hilt.android.AndroidEntryPoint -import gq.kirmanak.mealient.logging.Logger -import javax.inject.Inject - -@AndroidEntryPoint -class SplashFragment : Fragment() { - - private val viewModel by viewModels() - - @Inject - lateinit var logger: Logger - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" } - viewModel.nextDestination.observe(this, ::onNextDestination) - } - - private fun onNextDestination(navDirections: NavDirections) { - logger.v { "onNextDestination() called with: navDirections = $navDirections" } - findNavController().navigate(navDirections) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - logger.v { "onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState" } - } - - override fun onDestroyView() { - super.onDestroyView() - logger.v { "onDestroyView() called" } - } -} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt deleted file mode 100644 index 413ca94..0000000 --- a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashViewModel.kt +++ /dev/null @@ -1,31 +0,0 @@ -package gq.kirmanak.mealient.ui.splash - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import androidx.navigation.NavDirections -import dagger.hilt.android.lifecycle.HiltViewModel -import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo -import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorage -import kotlinx.coroutines.launch -import javax.inject.Inject - -@HiltViewModel -class SplashViewModel @Inject constructor( - private val disclaimerStorage: DisclaimerStorage, - private val serverInfoRepo: ServerInfoRepo, -) : ViewModel() { - private val _nextDestination = MutableLiveData() - val nextDestination: LiveData = _nextDestination - - init { - viewModelScope.launch { - _nextDestination.value = when { - !disclaimerStorage.isDisclaimerAccepted() -> SplashFragmentDirections.actionSplashFragmentToDisclaimerFragment() - serverInfoRepo.getUrl() == null -> SplashFragmentDirections.actionSplashFragmentToBaseURLFragment() - else -> SplashFragmentDirections.actionSplashFragmentToRecipesFragment() - } - } - } -} diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index e788a45..f5b97f5 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -33,8 +33,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" - app:layout_behavior="@string/appbar_scrolling_view_behavior" - app:navGraph="@navigation/nav_graph" /> + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + tools:ignore="InvalidNavigation"> - - - - - Date: Mon, 31 Oct 2022 21:01:52 +0100 Subject: [PATCH 03/19] Fix navigation setup --- .../java/gq/kirmanak/mealient/ui/activity/MainActivity.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index 9890d3f..8efd9a4 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -9,7 +9,7 @@ import androidx.core.net.toUri import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.isVisible import androidx.navigation.NavController -import androidx.navigation.findNavController +import androidx.navigation.fragment.NavHostFragment import com.google.android.material.shape.CornerFamily import com.google.android.material.shape.MaterialShapeDrawable import dagger.hilt.android.AndroidEntryPoint @@ -26,7 +26,7 @@ class MainActivity : AppCompatActivity() { private val title: String by lazy { getString(R.string.app_name) } private val uiState: MainActivityUiState get() = viewModel.uiState private val navController: NavController - get() = findNavController(binding.navHost.id) + get() = binding.navHost.getFragment().navController @Inject lateinit var logger: Logger From 0487a5c0382a6e94f517657c0b112bdcd887fc80 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Mon, 31 Oct 2022 21:16:20 +0100 Subject: [PATCH 04/19] Keep splash screen while start is unknown --- .../java/gq/kirmanak/mealient/ui/activity/MainActivity.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index 8efd9a4..1b347c3 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -32,7 +32,9 @@ class MainActivity : AppCompatActivity() { lateinit var logger: Logger override fun onCreate(savedInstanceState: Bundle?) { - installSplashScreen() + installSplashScreen().setKeepOnScreenCondition { + viewModel.startDestination.value == null + } super.onCreate(savedInstanceState) logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" } binding = MainActivityBinding.inflate(layoutInflater) From 610f3e93775411cd46d05fa89ed962aa5464cd45 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Mon, 31 Oct 2022 21:23:03 +0100 Subject: [PATCH 05/19] Ignore duplicate start destination updates --- .../gq/kirmanak/mealient/extensions/ViewExtensions.kt | 11 +++++++++++ .../gq/kirmanak/mealient/ui/activity/MainActivity.kt | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt index 84db523..2c717fc 100644 --- a/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt @@ -6,6 +6,8 @@ import android.widget.TextView import androidx.annotation.StringRes import androidx.core.widget.doAfterTextChanged import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer import androidx.lifecycle.lifecycleScope import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.google.android.material.textfield.TextInputLayout @@ -84,4 +86,13 @@ fun SharedPreferences.prefsChangeFlow( sendValue() registerOnSharedPreferenceChangeListener(listener) awaitClose { unregisterOnSharedPreferenceChangeListener(listener) } +} + +fun LiveData.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer) { + observe(lifecycleOwner, object : Observer { + override fun onChanged(value: T) { + removeObserver(this) + observer.onChanged(value) + } + }) } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index 1b347c3..9c6dce5 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -15,6 +15,7 @@ import com.google.android.material.shape.MaterialShapeDrawable import dagger.hilt.android.AndroidEntryPoint import gq.kirmanak.mealient.R import gq.kirmanak.mealient.databinding.MainActivityBinding +import gq.kirmanak.mealient.extensions.observeOnce import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject @@ -47,7 +48,7 @@ class MainActivity : AppCompatActivity() { private fun configureNavGraph() { val graph = navController.navInflater.inflate(R.navigation.nav_graph) - viewModel.startDestination.observe(this) { + viewModel.startDestination.observeOnce(this) { graph.setStartDestination(it) navController.setGraph(graph, intent.extras) } From 270707c434a5e765e58e2a09fe69daa571861996 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Thu, 3 Nov 2022 19:15:11 +0100 Subject: [PATCH 06/19] Add logging to start destination --- .../main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index 9c6dce5..109ca82 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -47,8 +47,9 @@ class MainActivity : AppCompatActivity() { } private fun configureNavGraph() { - val graph = navController.navInflater.inflate(R.navigation.nav_graph) viewModel.startDestination.observeOnce(this) { + logger.d { "configureNavGraph: received destination" } + val graph = navController.navInflater.inflate(R.navigation.nav_graph) graph.setStartDestination(it) navController.setGraph(graph, intent.extras) } From 8a91f02f0e4bf0e77dd74e1addf1255f915403b4 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Thu, 3 Nov 2022 19:36:24 +0100 Subject: [PATCH 07/19] Add splash screen animation vectors --- .../main/res/drawable/ic_splash_screen_bg.xml | 137 ++++++ .../drawable/ic_splash_screen_bread_low.xml | 25 + .../drawable/ic_splash_screen_bread_top.xml | 422 +++++++++++++++++ .../res/drawable/ic_splash_screen_cheese.xml | 17 + .../res/drawable/ic_splash_screen_lettuce.xml | 118 +++++ .../res/drawable/ic_splash_screen_meat.xml | 137 ++++++ .../res/drawable/ic_splash_screen_onion.xml | 114 +++++ .../res/drawable/ic_splash_screen_text.xml | 9 + .../res/drawable/ic_splash_screen_tomato.xml | 432 ++++++++++++++++++ 9 files changed, 1411 insertions(+) create mode 100644 app/src/main/res/drawable/ic_splash_screen_bg.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_bread_low.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_bread_top.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_cheese.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_lettuce.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_meat.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_onion.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_text.xml create mode 100644 app/src/main/res/drawable/ic_splash_screen_tomato.xml diff --git a/app/src/main/res/drawable/ic_splash_screen_bg.xml b/app/src/main/res/drawable/ic_splash_screen_bg.xml new file mode 100644 index 0000000..0c68b5b --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_bg.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_bread_low.xml b/app/src/main/res/drawable/ic_splash_screen_bread_low.xml new file mode 100644 index 0000000..d979778 --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_bread_low.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_bread_top.xml b/app/src/main/res/drawable/ic_splash_screen_bread_top.xml new file mode 100644 index 0000000..a9646d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_bread_top.xml @@ -0,0 +1,422 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_cheese.xml b/app/src/main/res/drawable/ic_splash_screen_cheese.xml new file mode 100644 index 0000000..b7a3ff8 --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_cheese.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_lettuce.xml b/app/src/main/res/drawable/ic_splash_screen_lettuce.xml new file mode 100644 index 0000000..d10162f --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_lettuce.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_meat.xml b/app/src/main/res/drawable/ic_splash_screen_meat.xml new file mode 100644 index 0000000..9427c4f --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_meat.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_onion.xml b/app/src/main/res/drawable/ic_splash_screen_onion.xml new file mode 100644 index 0000000..a89c28c --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_onion.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_text.xml b/app/src/main/res/drawable/ic_splash_screen_text.xml new file mode 100644 index 0000000..ee882ea --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_text.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_splash_screen_tomato.xml b/app/src/main/res/drawable/ic_splash_screen_tomato.xml new file mode 100644 index 0000000..5dcbc90 --- /dev/null +++ b/app/src/main/res/drawable/ic_splash_screen_tomato.xml @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b4071a5dae215b0cde5cb22cecdc69308f4cf7f7 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Thu, 3 Nov 2022 20:01:57 +0100 Subject: [PATCH 08/19] Implement first animated drawable --- .../animator/splash_screen_bread_low_y.xml | 6 +++ .../drawable/ic_splash_screen_bread_low.xml | 51 ++++++++++--------- .../res/drawable/splash_screen_animated.xml | 9 ++++ 3 files changed, 43 insertions(+), 23 deletions(-) create mode 100644 app/src/main/res/animator/splash_screen_bread_low_y.xml create mode 100644 app/src/main/res/drawable/splash_screen_animated.xml diff --git a/app/src/main/res/animator/splash_screen_bread_low_y.xml b/app/src/main/res/animator/splash_screen_bread_low_y.xml new file mode 100644 index 0000000..e96a62a --- /dev/null +++ b/app/src/main/res/animator/splash_screen_bread_low_y.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_splash_screen_bread_low.xml b/app/src/main/res/drawable/ic_splash_screen_bread_low.xml index d979778..014afee 100644 --- a/app/src/main/res/drawable/ic_splash_screen_bread_low.xml +++ b/app/src/main/res/drawable/ic_splash_screen_bread_low.xml @@ -1,25 +1,30 @@ - - - - - + android:width="132dp" + android:height="97dp" + android:viewportWidth="315" + android:viewportHeight="231"> + + + + + + + + diff --git a/app/src/main/res/drawable/splash_screen_animated.xml b/app/src/main/res/drawable/splash_screen_animated.xml new file mode 100644 index 0000000..be54cdf --- /dev/null +++ b/app/src/main/res/drawable/splash_screen_animated.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file From db4aaf0bbd33da0a6c07ff85fccff2ae77d41bca Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Thu, 3 Nov 2022 20:35:50 +0100 Subject: [PATCH 09/19] Use animated drawable on 31+ only --- app/src/main/res/values-v31/themes.xml | 8 ++++++++ app/src/main/res/values/themes.xml | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/values-v31/themes.xml diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml new file mode 100644 index 0000000..fb182ab --- /dev/null +++ b/app/src/main/res/values-v31/themes.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index f190ab3..e672ae5 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,10 +1,11 @@ - + \ No newline at end of file From 6ab23d6ef50e3b9ccf54f0a1a266fb9af7caf095 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Thu, 3 Nov 2022 23:06:59 +0100 Subject: [PATCH 13/19] Fix animation colors --- app/src/main/res/drawable/avd_anim.xml | 926 ++++++++++++------------- 1 file changed, 463 insertions(+), 463 deletions(-) diff --git a/app/src/main/res/drawable/avd_anim.xml b/app/src/main/res/drawable/avd_anim.xml index e819257..3881f89 100644 --- a/app/src/main/res/drawable/avd_anim.xml +++ b/app/src/main/res/drawable/avd_anim.xml @@ -1,465 +1,465 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:aapt="http://schemas.android.com/aapt"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d6c67d1663c5d6ae2aa1f678d30e9f0a61896796 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 4 Nov 2022 19:09:36 +0100 Subject: [PATCH 14/19] Call onCreate faster --- .../java/gq/kirmanak/mealient/ui/activity/MainActivity.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index 109ca82..c98aedf 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -33,11 +33,10 @@ class MainActivity : AppCompatActivity() { lateinit var logger: Logger override fun onCreate(savedInstanceState: Bundle?) { - installSplashScreen().setKeepOnScreenCondition { - viewModel.startDestination.value == null - } + val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" } + splashScreen.setKeepOnScreenCondition { viewModel.startDestination.value == null } binding = MainActivityBinding.inflate(layoutInflater) setContentView(binding.root) configureToolbar() From 6e15578725b182be7cec50c1407df403c2685e65 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 4 Nov 2022 19:12:44 +0100 Subject: [PATCH 15/19] Remove unused resources --- .../res/animator/splash_screen_bread_low.xml | 6 - .../res/animator/splash_screen_cheese.xml | 7 - .../main/res/drawable/ic_splash_screen.xml | 181 -------- .../drawable/ic_splash_screen_background.xml | 55 --- .../main/res/drawable/ic_splash_screen_bg.xml | 137 ------ .../drawable/ic_splash_screen_bread_low.xml | 25 - .../drawable/ic_splash_screen_bread_top.xml | 422 ----------------- .../res/drawable/ic_splash_screen_cheese.xml | 17 - .../res/drawable/ic_splash_screen_lettuce.xml | 118 ----- .../res/drawable/ic_splash_screen_meat.xml | 137 ------ .../res/drawable/ic_splash_screen_onion.xml | 114 ----- .../res/drawable/ic_splash_screen_text.xml | 9 - .../res/drawable/ic_splash_screen_tomato.xml | 432 ------------------ .../res/drawable/splash_screen_animated.xml | 13 - app/src/main/res/layout/fragment_splash.xml | 7 - 15 files changed, 1680 deletions(-) delete mode 100644 app/src/main/res/animator/splash_screen_bread_low.xml delete mode 100644 app/src/main/res/animator/splash_screen_cheese.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_background.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_bg.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_bread_low.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_bread_top.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_cheese.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_lettuce.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_meat.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_onion.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_text.xml delete mode 100644 app/src/main/res/drawable/ic_splash_screen_tomato.xml delete mode 100644 app/src/main/res/drawable/splash_screen_animated.xml delete mode 100644 app/src/main/res/layout/fragment_splash.xml diff --git a/app/src/main/res/animator/splash_screen_bread_low.xml b/app/src/main/res/animator/splash_screen_bread_low.xml deleted file mode 100644 index 29f2d8f..0000000 --- a/app/src/main/res/animator/splash_screen_bread_low.xml +++ /dev/null @@ -1,6 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/animator/splash_screen_cheese.xml b/app/src/main/res/animator/splash_screen_cheese.xml deleted file mode 100644 index db46646..0000000 --- a/app/src/main/res/animator/splash_screen_cheese.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_splash_screen.xml b/app/src/main/res/drawable/ic_splash_screen.xml deleted file mode 100644 index 283ea89..0000000 --- a/app/src/main/res/drawable/ic_splash_screen.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_splash_screen_background.xml b/app/src/main/res/drawable/ic_splash_screen_background.xml deleted file mode 100644 index e3007b4..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_background.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_bg.xml b/app/src/main/res/drawable/ic_splash_screen_bg.xml deleted file mode 100644 index 0c68b5b..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_bg.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_bread_low.xml b/app/src/main/res/drawable/ic_splash_screen_bread_low.xml deleted file mode 100644 index d979778..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_bread_low.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_bread_top.xml b/app/src/main/res/drawable/ic_splash_screen_bread_top.xml deleted file mode 100644 index a9646d3..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_bread_top.xml +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_cheese.xml b/app/src/main/res/drawable/ic_splash_screen_cheese.xml deleted file mode 100644 index b7a3ff8..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_cheese.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_lettuce.xml b/app/src/main/res/drawable/ic_splash_screen_lettuce.xml deleted file mode 100644 index d10162f..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_lettuce.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_meat.xml b/app/src/main/res/drawable/ic_splash_screen_meat.xml deleted file mode 100644 index 9427c4f..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_meat.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_onion.xml b/app/src/main/res/drawable/ic_splash_screen_onion.xml deleted file mode 100644 index a89c28c..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_onion.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_text.xml b/app/src/main/res/drawable/ic_splash_screen_text.xml deleted file mode 100644 index ee882ea..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_text.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_splash_screen_tomato.xml b/app/src/main/res/drawable/ic_splash_screen_tomato.xml deleted file mode 100644 index 5dcbc90..0000000 --- a/app/src/main/res/drawable/ic_splash_screen_tomato.xml +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/splash_screen_animated.xml b/app/src/main/res/drawable/splash_screen_animated.xml deleted file mode 100644 index 3dde106..0000000 --- a/app/src/main/res/drawable/splash_screen_animated.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_splash.xml b/app/src/main/res/layout/fragment_splash.xml deleted file mode 100644 index 79cb841..0000000 --- a/app/src/main/res/layout/fragment_splash.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file From 40804efd70ab540ba7bea5e3aeba095ac7dbd7c4 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 4 Nov 2022 19:14:05 +0100 Subject: [PATCH 16/19] Rename splash screen icon --- .../main/res/drawable/{avd_anim.xml => ic_splash_screen.xml} | 0 app/src/main/res/values-v31/themes.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename app/src/main/res/drawable/{avd_anim.xml => ic_splash_screen.xml} (100%) diff --git a/app/src/main/res/drawable/avd_anim.xml b/app/src/main/res/drawable/ic_splash_screen.xml similarity index 100% rename from app/src/main/res/drawable/avd_anim.xml rename to app/src/main/res/drawable/ic_splash_screen.xml diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml index 4dd3e4a..1e80414 100644 --- a/app/src/main/res/values-v31/themes.xml +++ b/app/src/main/res/values-v31/themes.xml @@ -2,7 +2,7 @@ From 30e6263ce1fd6936c6debfcf88e5ab4bb93545c2 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Fri, 4 Nov 2022 19:40:31 +0100 Subject: [PATCH 17/19] Update splash icon for pre-31 APIs --- .../res/drawable-v26/ic_splash_screen.xml | 5 +++ .../ic_splash_screen_background.xml | 31 ++++++++++++++++ .../ic_splash_screen_foreground.xml | 35 +++++++++++++++++++ .../ic_splash_screen.xml | 0 app/src/main/res/values-v31/themes.xml | 9 ----- app/src/main/res/values/themes.xml | 6 ++-- 6 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/drawable-v26/ic_splash_screen.xml create mode 100644 app/src/main/res/drawable-v26/ic_splash_screen_background.xml create mode 100644 app/src/main/res/drawable-v26/ic_splash_screen_foreground.xml rename app/src/main/res/{drawable => drawable-v31}/ic_splash_screen.xml (100%) delete mode 100644 app/src/main/res/values-v31/themes.xml diff --git a/app/src/main/res/drawable-v26/ic_splash_screen.xml b/app/src/main/res/drawable-v26/ic_splash_screen.xml new file mode 100644 index 0000000..454093a --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_splash_screen.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v26/ic_splash_screen_background.xml b/app/src/main/res/drawable-v26/ic_splash_screen_background.xml new file mode 100644 index 0000000..dcd8800 --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_splash_screen_background.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-v26/ic_splash_screen_foreground.xml b/app/src/main/res/drawable-v26/ic_splash_screen_foreground.xml new file mode 100644 index 0000000..98a9788 --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_splash_screen_foreground.xml @@ -0,0 +1,35 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/ic_splash_screen.xml b/app/src/main/res/drawable-v31/ic_splash_screen.xml similarity index 100% rename from app/src/main/res/drawable/ic_splash_screen.xml rename to app/src/main/res/drawable-v31/ic_splash_screen.xml diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml deleted file mode 100644 index 1e80414..0000000 --- a/app/src/main/res/values-v31/themes.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index e672ae5..3b79de9 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,11 +1,11 @@ - -