feat(activity): 新增 BaseActivity 沉浸式基类和 HomeActivity 首页,统一 Activity 继承关系
- 新增 BaseActivity:继承 ComponentActivity,隐藏状态栏和导航栏,底部上滑可临时唤出导航栏 - 新增 HomeActivity(XML 版本)及对应布局 activity_home.xml,作为应用启动入口 - GoodsListActivity、FoodCollectionActivity、LocalImagePreviewActivity、PurchaseOrderActivity 统一改为继承 BaseActivity - 更新 AndroidManifest.xml:HomeActivity 注册为启动入口 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package com.sw.inbound.base
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.WindowInsetsControllerCompat
|
||||
|
||||
/**
|
||||
* 所有 Activity 的基类
|
||||
* - 继承 ComponentActivity,保持与项目其他 Activity 一致
|
||||
* - 自动隐藏状态栏和导航栏,实现全屏沉浸式体验
|
||||
* - 在屏幕底部上滑时可临时唤出导航栏,松手后自动收回
|
||||
*/
|
||||
abstract class BaseActivity : ComponentActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
hideSystemBars()
|
||||
}
|
||||
|
||||
/**
|
||||
* 窗口焦点变化时回调
|
||||
* 场景:弹出 Dialog 后焦点丢失,Dialog 消失后焦点恢复,此时需重新隐藏系统栏,
|
||||
* 避免系统栏在 Dialog 关闭后意外"复活"
|
||||
*/
|
||||
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
||||
super.onWindowFocusChanged(hasFocus)
|
||||
if (hasFocus) {
|
||||
hideSystemBars()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 隐藏状态栏和导航栏
|
||||
* 使用 WindowInsetsControllerCompat(Androidx 推荐方式,向下兼容性好)
|
||||
* - 状态栏:完全隐藏
|
||||
* - 导航栏:完全隐藏,底部上滑时临时出现,松手后自动收回(BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE)
|
||||
*/
|
||||
private fun hideSystemBars() {
|
||||
// 允许布局延伸到系统栏区域(edge-to-edge),避免内容被系统栏遮挡
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
WindowInsetsControllerCompat(window, window.decorView).apply {
|
||||
// 同时隐藏状态栏和导航栏
|
||||
hide(WindowInsetsCompat.Type.systemBars())
|
||||
// 底部上滑时临时显示导航栏,松手后自动隐藏(沉浸式 Sticky 模式)
|
||||
systemBarsBehavior =
|
||||
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user