組合手勢
手勢識別組合,即多種手勢組合為復合手勢,支持連續識別、并行識別和互斥識別。
說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
從API Version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
接口
GestureGroup(mode: GestureMode, ...gesture: GestureType[])
參數:
參數名 | 參數類型 | 必填 | 參數描述 |
---|---|---|---|
mode | [GestureMode] | 是 | 設置組合手勢識別模式。 默認值:GestureMode.Sequence |
gesture | [TapGesture] | [LongPressGesture] | [PanGesture] |
GestureMode枚舉說明
名稱 | 描述 |
---|---|
Sequence | 順序識別,按照手勢的注冊順序識別手勢,直到所有手勢識別成功。當有一個手勢識別失敗時,所有手勢識別失敗。 順序識別手勢組僅有最后一個手勢可以響應onActionEnd。 |
Parallel | 并發識別,注冊的手勢同時識別,直到所有手勢識別結束,手勢識別互相不影響。 |
Exclusive | 互斥識別,注冊的手勢同時識別,若有一個手勢識別成功,則結束手勢識別。 |
事件
名稱 | 功能描述 |
---|---|
onCancel(event: () => void) | 順序組合手勢(GestureMode.Sequence)取消后觸發回調。 |
示例
// xxx.ets
@Entry
@Component
struct GestureGroupExample {
@State count: number = 0
@State offsetX: number = 0
@State offsetY: number = 0
@State positionX: number = 0
@State positionY: number = 0
@State borderStyles: BorderStyle = BorderStyle.Solid
build() {
Column() {
Text('sequence gesturen' + 'LongPress onAction:' + this.count + 'nPanGesture offset:nX: ' + this.offsetX + 'n' + 'Y: ' + this.offsetY)
.fontSize(15)
}
.translate({ x: this.offsetX, y: this.offsetY, z: 0 })
.height(150)
.width(200)
.padding(20)
.margin(20)
.border({ width: 3, style: this.borderStyles })
.gesture(
// 以下組合手勢為順序識別,當長按手勢事件未正常觸發時則不會觸發拖動手勢事件
GestureGroup(GestureMode.Sequence,
LongPressGesture({ repeat: true })
.onAction((event?: GestureEvent) = > {
if (event && event.repeat) {
this.count++
}
console.info('LongPress onAction')
}),
PanGesture()
.onActionStart(() = > {
this.borderStyles = BorderStyle.Dashed
console.info('pan start')
})
.onActionUpdate((event?: GestureEvent) = > {
if (event) {
this.offsetX = this.positionX + event.offsetX
this.offsetY = this.positionY + event.offsetY
}
console.info('pan update')
})
.onActionEnd(() = > {
this.positionX = this.offsetX
this.positionY = this.offsetY
this.borderStyles = BorderStyle.Solid
console.info('pan end')
})
)
.onCancel(() = > {
console.info('sequence gesture canceled')
})
)
}
}
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
示意圖:
按順序首先觸發長按事件:
按順序首先觸發長按事件,長按事件識別結束之后,其次觸發拖動事件,向右下方拖動:
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
鴻蒙
+關注
關注
57文章
2467瀏覽量
43626
發布評論請先 登錄
相關推薦
鴻蒙ArkTS聲明式開發:跨平臺支持列表【組件快捷鍵事件】
開發者可以設置組件的自定義組合鍵,組合鍵的行為與click行為一致,組件在未獲得焦點狀態下也可以響應自定義組合鍵,每個組件可以設置多個組合鍵

鴻蒙ArkTS聲明式開發:跨平臺支持列表【顯隱控制】 通用屬性
控制當前組件顯示或隱藏。注意,即使組件處于隱藏狀態,在頁面刷新時仍存在重新創建過程,因此當對性能有嚴格要求時建議使用[條件渲染]代替。 默認值:Visibility.Visible 從API version 9開始,該接口支持在ArkTS卡片中使用。

鴻蒙ArkTS聲明式開發:跨平臺支持列表【形狀裁剪】 通用屬性
參數為相應類型的組件,按指定的形狀對當前組件進行裁剪;參數為boolean類型時,設置是否按照父容器邊緣輪廓進行裁剪。 默認值:false 從API version 9開始,該接口支持在ArkTS卡片中使用。

評論