沉浸式

This commit is contained in:
2026-05-07 08:35:11 +08:00
parent 3558f053e6
commit fd5a5a30d2
18 changed files with 114 additions and 40 deletions

View File

@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.GridLayoutManager
import com.example.defenseapplication.adapter.AddDeviceAdapter
import com.example.defenseapplication.adapter.Device
import com.example.defenseapplication.databinding.AddDeviceActivityBinding
import com.gyf.immersionbar.ImmersionBar
class AddDeviceActivity : AppCompatActivity() {
@@ -18,7 +19,10 @@ class AddDeviceActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = AddDeviceActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
binding.ivBack.setOnClickListener {
finish()
}

View File

@@ -22,6 +22,7 @@ import com.example.defenseapplication.R
import com.example.defenseapplication.adapter.WifiListAdapter
import com.example.defenseapplication.databinding.AddFamilyActivityBinding
import com.example.defenseapplication.databinding.DialogWifiListBinding
import com.gyf.immersionbar.ImmersionBar
class AddFamilyActivity : AppCompatActivity() {
@@ -34,7 +35,10 @@ class AddFamilyActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = AddFamilyActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
binding.ivBack.setOnClickListener {
finish()
}

View File

@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.example.defenseapplication.adapter.MessageListAdapter
import com.example.defenseapplication.adapter.MessageListItem
import com.example.defenseapplication.databinding.MessageActivityBinding
import com.gyf.immersionbar.ImmersionBar
class MessageActivity : AppCompatActivity() {
private lateinit var binding: MessageActivityBinding
@@ -19,7 +20,10 @@ class MessageActivity : AppCompatActivity() {
enableEdgeToEdge()
binding = MessageActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
ViewCompat.setOnApplyWindowInsetsListener(binding.main) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)

View File

@@ -10,6 +10,7 @@ import com.bumptech.glide.Glide
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.PersonalFragmentBinding
import com.example.defenseapplication.personal.PersonalProfileActivity
import com.gyf.immersionbar.ImmersionBar
class PersonalFragment : Fragment() {
// ViewBinding
@@ -21,6 +22,12 @@ class PersonalFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.headerLayout)
.init()
_binding = PersonalFragmentBinding.inflate(inflater, container, false)
Glide.with(this)
.load(R.drawable.img)

View File

@@ -26,6 +26,7 @@ import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.ScanActivityBinding
import com.google.zxing.*
import com.google.zxing.common.HybridBinarizer
import com.gyf.immersionbar.ImmersionBar
import java.util.*
class ScanActivity : AppCompatActivity(), SurfaceHolder.Callback {
@@ -42,7 +43,10 @@ class ScanActivity : AppCompatActivity(), SurfaceHolder.Callback {
super.onCreate(savedInstanceState)
binding = ScanActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.btnBack)
.init()
initView()
initListener()
startScanLineAnimation()

View File

@@ -3,6 +3,7 @@ package com.example.defenseapplication.home
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.defenseapplication.databinding.SetNameActivityBinding
import com.gyf.immersionbar.ImmersionBar
class SetNameActivity : AppCompatActivity() {
@@ -12,7 +13,10 @@ class SetNameActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = SetNameActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
binding.ivBack.setOnClickListener {
finish()
}

View File

@@ -13,7 +13,10 @@ import android.widget.Toast
import androidx.activity.OnBackPressedDispatcher
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.ui.test.isEnabled
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.LiveVideoActivityBinding
import com.gyf.immersionbar.ImmersionBar
import com.gyf.immersionbar.ktx.destroyImmersionBar
import java.io.IOException
class LiveVideoActivity : AppCompatActivity(), SurfaceHolder.Callback {
@@ -36,6 +39,11 @@ class LiveVideoActivity : AppCompatActivity(), SurfaceHolder.Callback {
binding = LiveVideoActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
// ImmersionBar核心调用,沉浸式
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
initSurfaceView()
initListener()
@@ -297,5 +305,7 @@ class LiveVideoActivity : AppCompatActivity(), SurfaceHolder.Callback {
releaseMediaPlayer()
super.onDestroy()
}
}

View File

@@ -9,6 +9,7 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.FaceLoginActivityBinding
import com.gyf.immersionbar.ImmersionBar
class FaceLoginActivity : AppCompatActivity() {
@@ -17,7 +18,10 @@ class FaceLoginActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = FaceLoginActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topContainer)
.init()
setupListeners()
}

View File

@@ -15,6 +15,7 @@ import com.example.defenseapplication.databinding.FaceVerificationActivityBindin
import com.example.defenseapplication.view.FaceAnalyzer
import com.google.mlkit.vision.face.FaceDetection
import com.google.mlkit.vision.face.FaceDetectorOptions
import com.gyf.immersionbar.ImmersionBar
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
@@ -33,7 +34,10 @@ class FaceVerificationActivity : AppCompatActivity() {
// 使用标准 ViewBinding
binding = FaceVerificationActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topContainer)
.init()
// 初始化人脸检测器(选项可自行调整)
val options = FaceDetectorOptions.Builder()
.setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)

View File

@@ -14,6 +14,7 @@ import androidx.core.view.WindowInsetsCompat
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.ForgetPasswordActivityBinding
import com.google.firebase.crashlytics.buildtools.reloc.org.apache.http.util.TextUtils
import com.gyf.immersionbar.ImmersionBar
import java.util.regex.Pattern
import kotlin.random.Random
@@ -34,6 +35,10 @@ class ForgetPasswordActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = ForgetPasswordActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topContainer)
.init()
// 设置渐变背景
val startColor = Color.parseColor("#CBEBFA")
val endColor = Color.parseColor("#FFF2EF")

View File

@@ -11,6 +11,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import com.example.defenseapplication.databinding.ActivityLoginBinding
import com.gyf.immersionbar.ImmersionBar
class LoginActivity : AppCompatActivity() {
@@ -29,6 +30,11 @@ class LoginActivity : AppCompatActivity() {
val endColor = Color.parseColor("#FFF2EF")
setGradientBackground(binding.main, startColor, endColor)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.logoFrame)
.init()
setupTabListeners()
setupClickListeners()
switchToSmsMode()

View File

@@ -7,6 +7,7 @@ import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.defenseapplication.databinding.RegisterActivityBinding
import com.gyf.immersionbar.ImmersionBar
/**
* 注册页面
@@ -25,6 +26,12 @@ class RegisterActivity : AppCompatActivity() {
val startColor = Color.parseColor("#CBEBFA")
val endColor = Color.parseColor("#FFF2EF")
setGradientBackground(binding.main, startColor, endColor)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topContainer)
.init()
setupListeners()
//setupTextWatchers()
}

View File

@@ -10,6 +10,7 @@ import androidx.core.view.WindowInsetsCompat
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.RegisterSuccessActivityBinding
import com.example.defenseapplication.home.HomeActivity
import com.gyf.immersionbar.ImmersionBar
class RegisterSuccessActivity : AppCompatActivity() {
@@ -19,6 +20,10 @@ class RegisterSuccessActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = RegisterSuccessActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topContainer)
.init()
// 返回按钮
binding.backIcon.setOnClickListener {
finish()

View File

@@ -8,6 +8,7 @@ import androidx.core.view.WindowInsetsCompat
import com.bumptech.glide.Glide
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.PersonalProfileActivityBinding
import com.gyf.immersionbar.ImmersionBar
class PersonalProfileActivity : AppCompatActivity() {
private lateinit var binding: PersonalProfileActivityBinding
@@ -17,7 +18,10 @@ class PersonalProfileActivity : AppCompatActivity() {
enableEdgeToEdge()
binding = PersonalProfileActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
ViewCompat.setOnApplyWindowInsetsListener(binding.main) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)

View File

@@ -20,6 +20,7 @@
android:paddingBottom="12dp">
<LinearLayout
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"

View File

@@ -30,7 +30,6 @@
android:layout_weight="1"
android:gravity="center"
android:text="智能防御机A1"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold" />

View File

@@ -1,50 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/message_bg"
android:orientation="vertical"
tools:context=".home.MessageActivity">
<ImageView
android:id="@+id/ivBack"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:contentDescription="@null"
android:src="@mipmap/back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
<LinearLayout
android:id="@+id/topBar"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="消息列表"
android:textColor="#333333"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:orientation="horizontal">
<ImageView
android:id="@+id/ivBack"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/back"/>
<TextView
android:gravity="center"
android:id="@+id/tvTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="消息列表"
android:textColor="@color/black"
android:textSize="16dp"
android:textStyle="bold"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMessageList"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingStart="16dp"
android:paddingTop="12dp"
android:paddingEnd="16dp"
android:paddingBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTitle"
tools:listitem="@layout/item_message_notice" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>