Activity¶
VastActivity
组件为你提供了开发所必须的 Activity
组件。
快速使用¶
我们以 VastVbVmActivity
为例,你无需去手动初始化 ViewBinding
和 ViewModel
。
class ExampleActivity : VastVbVmActivity<ActivityExampleBinding, SampleSharedVM>() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
getBinding().addOne.setOnClickListener {
getViewModel().addOne()
}
getViewModel().count.observe(this){
getBinding().count.text = it.toString()
}
}
}
setContentView说明
请不要在子类中调用 setContentView
方法,不然会导致视图绑定失效。
隐藏 ActionBar¶
enableActionBar
必须在 super.onCreate
之后调用。
class ExampleActivity : VastVbVmActivity<ActivityExampleBinding, SampleSharedVM>() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableActionBar(false) // 不显示ActionBar
... // 其他设置
}
}
启动全面屏模式¶
enableFullScreen
必须在 super.onCreate
之后调用。
class ExampleActivity : VastVbVmActivity<ActivityExampleBinding, SampleSharedVM>() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableFullScreen(false) // 启用全面屏
... // 其他设置
}
}
含参数 ViewModel 的创建¶
如果 ViewModel
含有参数,你应该重写 createViewModel
方法。
class ParamVM(val param: String) : ViewModel()
class ThemeActivity : VastVbVmActivity<ActivityThemeBinding, ParamVM>() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
... // 其他设置
}
override fun createViewModel(modelClass: Class<out ViewModel>): ViewModel {
return ParamVM("This is a param")
}
}
设置启动页面¶
下面展示了如何设置启动页面,必须在 super.onCreate
前面调用。
class MainActivity : VastVbActivity<ActivityMainBinding>() {
private lateinit var mSplashScreen: SplashScreen
override fun onCreate(savedInstanceState: Bundle?) {
mSplashScreen = installSplashScreen()
super.onCreate(savedInstanceState)
... // 其他设置
}
}
默认日志标志¶
你可以通过 getDefaultTag
作为日志的默认TAG,是 Activity
的类名。
Log.i(getDefaultTag(), "这是一个日志。")
Snackbar¶
VastVbActivity
VastVbVmActivity
VastVmActivity
提供了默认的 Snacker
对象 mSnackbar
。
getSnackbar().setText(ResUtils.getString(R.string.loading_page)).show()
Context¶
你可以通过 getContext()
对象获取 Activity
上下文。
获取视图绑定对象¶
通过 getBinding()
你可以获取对应的视图绑定对象。
getBinding().view