From 936f87a38a18bb04fe95d716a0160ed4e7a0d646 Mon Sep 17 00:00:00 2001 From: SeniorZhai Date: Wed, 4 Mar 2026 16:26:38 +0800 Subject: [PATCH] refactor(ui): migrate away from deprecated SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN APIs --- .../android/ui/preview/TextPreviewActivity.kt | 17 +++++++++-------- .../android/ui/wallet/DepositShareActivity.kt | 7 ++----- .../android/ui/wallet/MarketShareActivity.kt | 6 ++---- .../one/mixin/android/ui/web/WebFragment.kt | 14 +++----------- 4 files changed, 16 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/one/mixin/android/ui/preview/TextPreviewActivity.kt b/app/src/main/java/one/mixin/android/ui/preview/TextPreviewActivity.kt index d0d9efd370..c4d73b309e 100644 --- a/app/src/main/java/one/mixin/android/ui/preview/TextPreviewActivity.kt +++ b/app/src/main/java/one/mixin/android/ui/preview/TextPreviewActivity.kt @@ -12,8 +12,10 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.MotionEvent -import android.view.View import androidx.activity.viewModels +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.doOnPreDraw import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint @@ -171,16 +173,15 @@ class TextPreviewActivity : BlazeBaseActivity() { overridePendingTransition(0, android.R.anim.fade_out) } - @Suppress("DEPRECATION") private fun hideSystemUI() { - window.decorView.systemUiVisibility = + WindowCompat.getInsetsController(window, window.decorView).apply { + hide(WindowInsetsCompat.Type.statusBars()) + systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + isAppearanceLightStatusBars = true if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or - View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR - } else { - View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or - View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + isAppearanceLightNavigationBars = true } + } } companion object { diff --git a/app/src/main/java/one/mixin/android/ui/wallet/DepositShareActivity.kt b/app/src/main/java/one/mixin/android/ui/wallet/DepositShareActivity.kt index 8a47cd9013..067260ee67 100644 --- a/app/src/main/java/one/mixin/android/ui/wallet/DepositShareActivity.kt +++ b/app/src/main/java/one/mixin/android/ui/wallet/DepositShareActivity.kt @@ -18,6 +18,7 @@ import androidx.core.content.FileProvider import androidx.core.view.drawToBitmap import androidx.core.view.isInvisible import androidx.core.view.isVisible +import androidx.core.view.WindowCompat import androidx.core.view.updateLayoutParams import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint @@ -141,11 +142,7 @@ class DepositShareActivity : BaseActivity() { }) } - window.decorView.systemUiVisibility = ( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - ) - window.statusBarColor = android.graphics.Color.TRANSPARENT + WindowCompat.setDecorFitsSystemWindows(window, false) binding.iconFl.round(6.dp) binding.content.updateLayoutParams { diff --git a/app/src/main/java/one/mixin/android/ui/wallet/MarketShareActivity.kt b/app/src/main/java/one/mixin/android/ui/wallet/MarketShareActivity.kt index df953bcf30..5d09f866fa 100644 --- a/app/src/main/java/one/mixin/android/ui/wallet/MarketShareActivity.kt +++ b/app/src/main/java/one/mixin/android/ui/wallet/MarketShareActivity.kt @@ -12,6 +12,7 @@ import android.os.Bundle import android.view.View import android.view.ViewGroup.MarginLayoutParams import androidx.core.content.FileProvider +import androidx.core.view.WindowCompat import androidx.core.view.drawToBitmap import androidx.core.view.updateLayoutParams import androidx.lifecycle.lifecycleScope @@ -78,10 +79,7 @@ class MarketShareActivity : BaseActivity() { binding.container.background = BitmapDrawable(resources, it.blurBitmap(25)) }) } - window.decorView.systemUiVisibility = ( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - ) + WindowCompat.setDecorFitsSystemWindows(window, false) SystemUIManager.setSafePadding(window, android.graphics.Color.TRANSPARENT) binding.test.round(8.dp) binding.content.updateLayoutParams { diff --git a/app/src/main/java/one/mixin/android/ui/web/WebFragment.kt b/app/src/main/java/one/mixin/android/ui/web/WebFragment.kt index 8f1e379db3..1da6ecc12e 100644 --- a/app/src/main/java/one/mixin/android/ui/web/WebFragment.kt +++ b/app/src/main/java/one/mixin/android/ui/web/WebFragment.kt @@ -478,7 +478,6 @@ class WebFragment : BaseFragment() { private var customView: View? = null private var customViewCallback: WebChromeClient.CustomViewCallback? = null - private var originalSystemUiVisibility = 0 @SuppressLint("SetJavaScriptEnabled") private fun initView() { @@ -604,20 +603,13 @@ class WebFragment : BaseFragment() { } customView = view customViewCallback = callback - originalSystemUiVisibility = requireActivity().window.decorView.systemUiVisibility binding.customViewContainer.addView(view) binding.customViewContainer.isVisible = true binding.webLl.isVisible = false binding.webControl.isVisible = false - requireActivity().window.decorView.systemUiVisibility = - View.SYSTEM_UI_FLAG_LAYOUT_STABLE or - View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or - View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or - View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or - View.SYSTEM_UI_FLAG_FULLSCREEN or - View.SYSTEM_UI_FLAG_IMMERSIVE + SystemUIManager.hideSystemUI(requireActivity().window) requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE } @@ -635,7 +627,7 @@ class WebFragment : BaseFragment() { customView = null - requireActivity().window.decorView.systemUiVisibility = originalSystemUiVisibility + SystemUIManager.showSystemUI(requireActivity().window) requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT customViewCallback?.onCustomViewHidden() @@ -1284,7 +1276,7 @@ class WebFragment : BaseFragment() { binding.webLl.removeView(webView) processor.close() if (requireActivity().requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { - requireActivity().window.decorView.systemUiVisibility = originalSystemUiVisibility + SystemUIManager.showSystemUI(requireActivity().window) requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } super.onDestroyView()