跳转至

Activity

VastActivity 组件为你提供了开发所必须的 Activity 组件。

快速使用

我们以 VastVbVmActivity 为例,你无需去手动初始化 ViewBindingViewModel

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
        ... // 其他设置
    }

}

隐藏ActionBar

隐藏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()

Snackbar

Snackbar

Context

你可以通过 getContext() 对象获取 Activity 上下文。

进行网络请求

getResponseBuilder().suspendWithListener({
    NetworkRetrofitBuilder().create(UserService::class.java).generateQRCode(DateUtils.currentTime)
}){
    onSuccess = {

    }
    onFailed = {

    }
}

过时说明

getResponseBuilder 方法在 0.5.3 版本已被废弃。

获取视图绑定对象

通过 getBinding() 你可以获取对应的视图绑定对象。

getBinding().view