Skip to content

Latest commit

 

History

History
78 lines (51 loc) · 2.18 KB

custom-page.md

File metadata and controls

78 lines (51 loc) · 2.18 KB

自定义页面

rabbit依托于浮窗来与用户交互。考虑到很多app都会有一些debug页面,rabbit提供了一套API可以把一些你自定义的页面接入到rabbit浮窗中。

自定义rabbit页面

能够被rabbit展示的页面需要继承自RabbitBasePage:

class CustomBusinessPage(context: Context) : RabbitBasePage(context) {

    override fun getLayoutResId() = INVALID_RES_ID

    override fun setEntryParams(params: Any) {
        super.setEntryParams(params)
    }
    
    init {
        background = getDrawable(context, R.color.rabbit_white)
        addView(TextView(context).apply {
            text = "业务自定义页面"
            textSize = 20f
        })

        setTitle("自定义业务面板")
    }
}
  • getLayoutResId() : 页面布局, 如果没有可以传INVALID_RES_ID
  • init代码块 : 初始化页面UI
  • setEntryParams : 页面跳转的参数

获取Activity Context

由于rabbit展示在window上,它所能提供的上下文并不是Activity,如果你需要Activity的话,可以调用Rabbit.getCurrentActivity()来获取当前应用的页面上下文。

接入到rabbit中

自定义好页面后,可以配置到rabbit中:

val rabbitConfig = RabbitConfig()
val page1 = RabbitMainFeatureInfo("业务面板",R.mipmap.ic_launcher,CustomBusinessPage::class.java)
val customPages = arrayListOf(page1)
rabbitConfig.uiConfig.entryFeatures = customPages
Rabbit.config(rabbitConfig)

这样你就可以在rabbit中看到你自己的debug页面了:

在rabbit中定义更多页面

你可能需要从自定义的rabbit页面跳转至另一个自定义的rabbit页面,可以通过下面方法跳转:

Rabbit.openPage(RabbitExceptionDetailPage::class.java, logInfo)

上面打开了RabbitExceptionDetailPage页面,并携带了logInfo对象作为参数。

RabbitExceptionDetailPage你可以通过setEntryParams来接收页面入参:

class RabbitExceptionDetailPage(context: Context): RabbitBasePage(context) {

    override fun setEntryParams(exceptionInfo: Any) {
        if (exceptionInfo !is RabbitExceptionInfo) return

        ...use exceptionInfo 对象
    }
}