统一设置 基类
This commit is contained in:
parent
1b38648b3a
commit
ec9dabdc0e
|
|
@ -30,6 +30,8 @@ class SplashActivity : AppViewsEmptyViewModelActivity<ViewBinding>(), OnTabStyle
|
||||||
|
|
||||||
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
|
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
|
||||||
|
|
||||||
|
override var mEnableBannerAd = false
|
||||||
|
|
||||||
override fun ViewBinding.initViews() {
|
override fun ViewBinding.initViews() {
|
||||||
startTime = System.currentTimeMillis()
|
startTime = System.currentTimeMillis()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import android.content.Intent
|
||||||
import android.os.CountDownTimer
|
import android.os.CountDownTimer
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import androidx.activity.addCallback
|
import androidx.activity.addCallback
|
||||||
import androidx.activity.viewModels
|
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.updatePadding
|
import androidx.core.view.updatePadding
|
||||||
|
|
@ -22,7 +21,6 @@ import com.remax.bill.ads.AdResult
|
||||||
import com.remax.bill.ads.ext.AdShowExt
|
import com.remax.bill.ads.ext.AdShowExt
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.getValue
|
|
||||||
import com.vididin.real.money.game.databinding.ActivityWatchAdBinding as ViewBinding
|
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 {
|
class WatchAdActivity : AppViewsEmptyViewModelActivity<ViewBinding>(), OnTabStyleListener {
|
||||||
|
|
||||||
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
|
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
|
||||||
|
override var mEnableBannerAd = false
|
||||||
|
|
||||||
private lateinit var mCountDownTimer: CountDownTimer
|
private lateinit var mCountDownTimer: CountDownTimer
|
||||||
private var mWatchType: Int = 0
|
private var mWatchType: Int = 0
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,10 @@
|
||||||
package com.ama.core.architecture.base
|
package com.ama.core.architecture.base
|
||||||
|
|
||||||
import android.view.View
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.ViewCompat
|
|
||||||
import androidx.core.view.WindowInsetsCompat
|
|
||||||
|
|
||||||
|
|
||||||
abstract class BaseActivity : AppCompatActivity() {
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -2,11 +2,18 @@ package com.ama.core.architecture.base.views
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.FrameLayout
|
||||||
|
import android.widget.RelativeLayout
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.lifecycle.flowWithLifecycle
|
import androidx.lifecycle.flowWithLifecycle
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
|
import com.ama.core.architecture.R
|
||||||
import com.ama.core.architecture.base.BaseActivity
|
import com.ama.core.architecture.base.BaseActivity
|
||||||
import com.ama.core.architecture.base.BaseViewModel
|
import com.ama.core.architecture.base.BaseViewModel
|
||||||
import com.ama.core.architecture.interfaces.ViewBindingActivity
|
import com.ama.core.architecture.interfaces.ViewBindingActivity
|
||||||
|
|
@ -24,8 +31,9 @@ import kotlinx.coroutines.launch
|
||||||
|
|
||||||
abstract class BaseViewsActivity<Binding : ViewBinding, UiState : Any,
|
abstract class BaseViewsActivity<Binding : ViewBinding, UiState : Any,
|
||||||
ViewModel : BaseViewModel<UiState>> :
|
ViewModel : BaseViewModel<UiState>> :
|
||||||
BaseActivity(), ViewBindingActivity<Binding, UiState>, ViewModelOwner<UiState, ViewModel>,
|
BaseActivity(), ViewBindingActivity<Binding, UiState>, ViewModelOwner<UiState, ViewModel>, DefaultStateViewManager, MessageCollectorOwner {
|
||||||
DefaultStateViewManager, MessageCollectorOwner {
|
private lateinit var mFinalRootView: ViewGroup
|
||||||
|
protected open var mEnableBannerAd = true
|
||||||
|
|
||||||
override val binding: Binding by lazy { inflateViewBinding(layoutInflater) }
|
override val binding: Binding by lazy { inflateViewBinding(layoutInflater) }
|
||||||
|
|
||||||
|
|
@ -57,9 +65,7 @@ abstract class BaseViewsActivity<Binding : ViewBinding, UiState : Any,
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
initEdgeToEdge()
|
initEdgeToEdge()
|
||||||
readIntent(intent)
|
readIntent(intent)
|
||||||
// 内容
|
setContentView(getContentView())
|
||||||
setContentView(binding.root)
|
|
||||||
// 初始化
|
|
||||||
binding.initWindowInsets()
|
binding.initWindowInsets()
|
||||||
binding.initViews()
|
binding.initViews()
|
||||||
binding.initListeners()
|
binding.initListeners()
|
||||||
|
|
@ -100,4 +106,51 @@ abstract class BaseViewsActivity<Binding : ViewBinding, UiState : Any,
|
||||||
initLoadStateUiStateCollect(mViewModel, lifecycleScope, lifecycle)
|
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() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue