hikage-compiler
这是 Hikage 的自动化编译模块。
配置依赖
你可以使用如下方式将此模块添加到你的项目中。
注意
你需要在你的项目中集成适合于你项目当前 Kotlin 版本的 Google KSP 插件。
SweetDependency (推荐)
在你的项目 SweetDependency
配置文件中添加依赖。
plugins:
com.google.devtools.ksp:
version: +
libraries:
com.highcapable.hikage:
hikage-compiler:
version: +
在你的根项目 build.gradle.kts
中配置依赖。
plugins {
// ...
autowire(libs.plugins.com.google.devtools.ksp) apply false
}
在你的项目 build.gradle.kts
中配置依赖。
plugins {
// ...
autowire(libs.plugins.com.google.devtools.ksp)
}
dependencies {
// ...
ksp(com.highcapable.hikage.hikage.compiler)
}
传统方式
在你的根项目 build.gradle.kts
中配置依赖。
plugins {
// ...
id("com.google.devtools.ksp") version "<ksp-version>" apply false
}
在你的项目 build.gradle.kts
中配置依赖。
plugins {
// ...
id("com.google.devtools.ksp")
}
dependencies {
// ...
ksp("com.highcapable.hikage:hikage-compiler:<version>")
}
请将 <version>
修改为此文档顶部显示的版本,并将 <ksp-version>
修改为你项目当前使用的 Kotlin 版本对应的 KSP 版本。
功能介绍
Hikage 的编译模块将在运行时自动生成代码,在更新后,请重新运行 assembleDebug
或 assembleRelease
Task 以生成最新的代码。
生成布局组件
Hikage 可以在编译时为指定的布局组件自动生成布局组件对应的 Hikageable
函数。
自定义 View
你可以在你的自定义 View
上加入 HikageView
注解,以标记它生成为 Hikage 布局组件。
参数名称 | 描述 |
---|---|
lparams | 布局参数 ViewGroup.LayoutParams Class 对象,如果你的自定义 View 是 ViewGroup 的子类,则可以声明或留空使用默认值 |
alias | 布局组件的别名,即要生成的函数名称,默认获取当前 Class 的名称 |
requireInit | 是否要求填写布局的初始化方法块,默认为可省略的参数 |
requirePerformer | 是否要求填写布局的 performer 方法块,默认为可省略的参数,仅在你的自定义 View 是 ViewGroup 的子类时生效 |
示例如下
@HikageView(lparams = LinearLayout.LayoutParams::class)
class MyLayout(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
// ...
}
编译后,你就可以在 Hikage 布局中使用 MyLayout
作为布局组件了。
示例如下
Hikageable {
MyLayout {
TextView(
lparams = LayoutParams {
topMargin = 16.dp
}
) {
text = "Hello, World!"
}
}
}
第三方组件
Hikage 同样可以为第三方提供的 View
组件自动生成布局组件函数,你可以使用 HikageViewDeclaration
注解来完成。
参数名称 | 描述 |
---|---|
view | 需要声明的布局组件的 Class 对象 |
lparams | 布局参数 ViewGroup.LayoutParams Class 对象,如果你的自定义 View 是 ViewGroup 的子类,则可以声明或留空使用默认值 |
alias | 布局组件的别名,即要生成的函数名称,默认获取 view Class 的名称 |
requireInit | 是否要求填写布局的初始化方法块,默认为可省略的参数 |
requirePerformer | 是否要求填写布局的 performer 方法块,默认为可省略的参数,仅在你的自定义 View 是 ViewGroup 的子类时生效 |
示例如下
@HikageViewDeclaration(ThirdPartyView::class)
object ThirdPartyViewDeclaration
这个注解可以声明到任意一个 object
类上,仅作为注解扫描器需要自动纳入的类来使用,你可以将可见性设为 private
,但要确保被注解的类一定是使用 object
修饰的。
同样地,编译后,你就可以在 Hikage 布局中使用 ThirdPartyView
作为布局组件了。
示例如下
Hikageable {
ThirdPartyView {
// ...
}
}
小提示
Hikage 生成布局组件的函数包名路径为 com.highcapable.hikage.widget
+ 你的 View
或第三方 View
组件的完整包名。