往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)
动态手势设置
动态设置组件绑定的手势,支持开发者在属性设置时使用if/else语法。
说明
从API Version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
gestureModifier
gestureModifier(modifier: GestureModifier)
动态设置组件绑定的手势。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
modifier | GestureModifier | 是 | 在当前组件上,动态设置组件绑定的手势,支持使用if/else语法。 modifier: 手势修改器,开发者需要自定义class实现GestureModifier接口。 |
GestureModifier
开发者需要自定义class实现GestureModifier接口。
applyGesture
applyGesture(event: UIGestureEvent): void
组件需要绑定的手势。
开发者可根据需要自定义实现这个方法,对组件设置需要绑定的手势,支持使用if/else语法进行动态设置。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
参数:
参数名 | 类型 | 说明 |
---|---|---|
event | UIGestureEvent | UIGestureEvent对象,用于设置组件需要绑定的手势。 |
示例
该示例通过gestureModifier动态设置组件绑定的手势。
// xxx.ets
class MyButtonModifier implements GestureModifier {
supportDoubleTap: boolean = true
applyGesture(event: UIGestureEvent): void {
if (this.supportDoubleTap) {
event.addGesture(
new TapGestureHandler({ count: 2, fingers: 1 })
.tag("aaa")
.onAction((event: GestureEvent) => {
console.log("button tap ")
})
)
} else {
event.addGesture(
new PanGestureHandler()
.onActionStart(()=>{
console.log("Pan start");
})
)
}
}
}
@Entry
@Component
struct Index {
@State modifier: MyButtonModifier = new MyButtonModifier()
build() {
Row() {
Column() {
Column()
.gestureModifier(this.modifier)
.width(500)
.height(500)
.backgroundColor(Color.Blue)
}
.width('100%')
}
.height('100%')
}
}