统一设置 基类

This commit is contained in:
renhaoting 2025-12-17 19:21:34 +08:00
parent 1b38648b3a
commit ec9dabdc0e
4 changed files with 62 additions and 20 deletions

View File

@ -30,6 +30,8 @@ class SplashActivity : AppViewsEmptyViewModelActivity<ViewBinding>(), OnTabStyle
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
override var mEnableBannerAd = false
override fun ViewBinding.initViews() {
startTime = System.currentTimeMillis()

View File

@ -5,7 +5,6 @@ import android.content.Intent
import android.os.CountDownTimer
import android.view.LayoutInflater
import androidx.activity.addCallback
import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
@ -22,7 +21,6 @@ import com.remax.bill.ads.AdResult
import com.remax.bill.ads.ext.AdShowExt
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import kotlin.getValue
import com.vididin.real.money.game.databinding.ActivityWatchAdBinding as ViewBinding
@ -31,7 +29,7 @@ import com.vididin.real.money.game.databinding.ActivityWatchAdBinding as ViewBin
class WatchAdActivity : AppViewsEmptyViewModelActivity<ViewBinding>(), OnTabStyleListener {
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
override var mEnableBannerAd = false
private lateinit var mCountDownTimer: CountDownTimer
private var mWatchType: Int = 0

View File

@ -1,21 +1,10 @@
package com.ama.core.architecture.base
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
abstract class BaseActivity : AppCompatActivity() {
protected fun setImmerseRootView(rootView: View) {
ViewCompat.setOnApplyWindowInsetsListener(rootView) { v, insets ->
val systemBars = insets.getInsets(
WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout() or WindowInsetsCompat.Type.ime()
)
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
}

View File

@ -2,11 +2,18 @@ package com.ama.core.architecture.base.views
import android.content.Intent
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.RelativeLayout
import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.viewbinding.ViewBinding
import com.ama.core.architecture.R
import com.ama.core.architecture.base.BaseActivity
import com.ama.core.architecture.base.BaseViewModel
import com.ama.core.architecture.interfaces.ViewBindingActivity
@ -24,8 +31,9 @@ import kotlinx.coroutines.launch
abstract class BaseViewsActivity<Binding : ViewBinding, UiState : Any,
ViewModel : BaseViewModel<UiState>> :
BaseActivity(), ViewBindingActivity<Binding, UiState>, ViewModelOwner<UiState, ViewModel>,
DefaultStateViewManager, MessageCollectorOwner {
BaseActivity(), ViewBindingActivity<Binding, UiState>, ViewModelOwner<UiState, ViewModel>, DefaultStateViewManager, MessageCollectorOwner {
private lateinit var mFinalRootView: ViewGroup
protected open var mEnableBannerAd = true
override val binding: Binding by lazy { inflateViewBinding(layoutInflater) }
@ -57,9 +65,7 @@ abstract class BaseViewsActivity<Binding : ViewBinding, UiState : Any,
super.onCreate(savedInstanceState)
initEdgeToEdge()
readIntent(intent)
// 内容
setContentView(binding.root)
// 初始化
setContentView(getContentView())
binding.initWindowInsets()
binding.initViews()
binding.initListeners()
@ -100,4 +106,51 @@ abstract class BaseViewsActivity<Binding : ViewBinding, UiState : Any,
initLoadStateUiStateCollect(mViewModel, lifecycleScope, lifecycle)
}
protected fun setImmerseRootView(rootView: View) {
ViewCompat.setOnApplyWindowInsetsListener(rootView) { v, insets ->
val systemBars = insets.getInsets(
WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout() or WindowInsetsCompat.Type.ime()
)
if (mEnableBannerAd) {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, 0)
mFinalRootView.run {
setPadding(paddingLeft, paddingTop, paddingRight,systemBars.bottom)
}
} else {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
}
insets
}
}
private fun getContentView(): View {
if (mEnableBannerAd) {
mFinalRootView = RelativeLayout(this)
val adContainer = FrameLayout(this).apply {
layoutParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,100).apply {
addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
}
setBackgroundResource(R.color.gray_3)
id = ViewCompat.generateViewId()
}
mFinalRootView.addView(adContainer)
val bindingRootLayoutParams = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT).apply {
addRule(RelativeLayout.ABOVE, adContainer.id)
}
mFinalRootView.addView(binding.root, bindingRootLayoutParams)
} else {
return binding.root
}
return mFinalRootView
}
private fun addShowAdView() {
}
}