diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 4ca99d0..fd6d8bc 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -3,7 +3,7 @@ - diff --git a/app/src/main/java/sh/sar/basedbank/LockActivity.kt b/app/src/main/java/sh/sar/basedbank/LockActivity.kt index ef63186..663abe4 100644 --- a/app/src/main/java/sh/sar/basedbank/LockActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/LockActivity.kt @@ -10,6 +10,9 @@ import androidx.appcompat.app.AppCompatActivity import androidx.biometric.BiometricManager import androidx.biometric.BiometricPrompt import androidx.core.content.ContextCompat +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope import com.google.android.material.button.MaterialButton import kotlinx.coroutines.Dispatchers @@ -41,8 +44,19 @@ class LockActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) binding = ActivityLockBinding.inflate(layoutInflater) setContentView(binding.root) + val isLight = (resources.configuration.uiMode and android.content.res.Configuration.UI_MODE_NIGHT_MASK) == android.content.res.Configuration.UI_MODE_NIGHT_NO + WindowCompat.getInsetsController(window, window.decorView).apply { + isAppearanceLightStatusBars = isLight + isAppearanceLightNavigationBars = isLight + } + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, insets -> + val bars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.setPadding(bars.left, bars.top, bars.right, bars.bottom) + insets + } val prefs = getSharedPreferences("prefs", MODE_PRIVATE) method = prefs.getString("security_method", "pin") ?: "pin" diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt index cec24ca..1cc9f8d 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt @@ -1,6 +1,7 @@ package sh.sar.basedbank.ui.home import android.content.Intent +import android.content.res.Configuration import android.os.Bundle import android.os.CountDownTimer import android.os.Handler @@ -14,6 +15,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import androidx.activity.viewModels import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.WindowCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.lifecycle.Lifecycle @@ -84,11 +86,17 @@ class HomeActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) binding = ActivityHomeBinding.inflate(layoutInflater) if (getSharedPreferences("prefs", MODE_PRIVATE).getBoolean("block_screenshots", true)) { window.addFlags(android.view.WindowManager.LayoutParams.FLAG_SECURE) } setContentView(binding.root) + val isLight = (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO + WindowCompat.getInsetsController(window, window.decorView).apply { + isAppearanceLightStatusBars = isLight + isAppearanceLightNavigationBars = isLight + } setSupportActionBar(binding.toolbar) toggle = ActionBarDrawerToggle( diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt index 1b97514..d688cc9 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt @@ -14,6 +14,9 @@ import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.camera.core.CameraSelector +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import androidx.camera.core.ImageAnalysis import androidx.camera.core.Preview import androidx.camera.core.resolutionselector.AspectRatioStrategy @@ -84,8 +87,23 @@ class QrScannerActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) binding = ActivityQrScannerBinding.inflate(layoutInflater) setContentView(binding.root) + // Black camera background — always use light (white) system bar icons + WindowCompat.getInsetsController(window, window.decorView).apply { + isAppearanceLightStatusBars = false + isAppearanceLightNavigationBars = false + } + val originalBtnMarginBottom = (48 * resources.displayMetrics.density).toInt() + ViewCompat.setOnApplyWindowInsetsListener(binding.btnContainer) { view, insets -> + val bars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + (view.layoutParams as android.widget.FrameLayout.LayoutParams).also { + it.bottomMargin = originalBtnMarginBottom + bars.bottom + view.layoutParams = it + } + insets + } binding.btnCancel.setOnClickListener { finish() } binding.btnPickImage.setOnClickListener { pickImageLauncher.launch("image/*") } diff --git a/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt index 267b433..1ac2926 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt @@ -1,7 +1,9 @@ package sh.sar.basedbank.ui.login +import android.content.res.Configuration import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.WindowCompat import sh.sar.basedbank.databinding.ActivityLoginBinding class LoginActivity : AppCompatActivity() { @@ -10,7 +12,13 @@ class LoginActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) + val isLight = (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO + WindowCompat.getInsetsController(window, window.decorView).apply { + isAppearanceLightStatusBars = isLight + isAppearanceLightNavigationBars = isLight + } } } diff --git a/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt index 7788a23..dd27343 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt @@ -8,6 +8,9 @@ import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import androidx.core.os.LocaleListCompat +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayoutMediator import sh.sar.basedbank.R @@ -22,9 +25,21 @@ class OnboardingActivity : AppCompatActivity(), SecuritySetupFragment.Callback { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) binding = ActivityOnboardingBinding.inflate(layoutInflater) setContentView(binding.root) + val isLight = (resources.configuration.uiMode and android.content.res.Configuration.UI_MODE_NIGHT_MASK) == android.content.res.Configuration.UI_MODE_NIGHT_NO + WindowCompat.getInsetsController(window, window.decorView).apply { + isAppearanceLightStatusBars = isLight + isAppearanceLightNavigationBars = isLight + } prefs = getSharedPreferences("prefs", MODE_PRIVATE) + val originalBottomPadding = binding.bottomBar.paddingBottom + ViewCompat.setOnApplyWindowInsetsListener(binding.bottomBar) { view, insets -> + val navBar = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + view.setPadding(view.paddingLeft, view.paddingTop, view.paddingRight, originalBottomPadding + navBar.bottom) + insets + } val adapter = OnboardingPagerAdapter(this) binding.viewPager.adapter = adapter diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index f8f3955..d3e5ada 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -4,17 +4,20 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawerLayout" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + android:background="?attr/colorSurface" + android:fitsSystemWindows="true"> + android:layout_height="wrap_content" + android:fitsSystemWindows="true"> @@ -61,6 +65,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" + android:fitsSystemWindows="true" app:menu="@menu/drawer_menu" /> diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 6551d2d..d09261b 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -4,7 +4,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/colorSurface"> + android:background="?attr/colorSurface" + android:fitsSystemWindows="true">