觸摸事件
當手指在組件上按下、滑動、抬起時觸發。
說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
從API Version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
事件
名稱 | 是否冒泡 | 功能描述 |
---|---|---|
onTouch(event: (event?: TouchEvent) => void) | 是 | 手指觸摸動作觸發該回調,event返回值見[TouchEvent]介紹。 |
TouchEvent對象說明
名稱 | 類型 | 描述 |
---|---|---|
type | [TouchType] | 觸摸事件的類型。 |
touches | Array<[TouchObject]> | 全部手指信息。 |
changedTouches | Array<[TouchObject]> | 當前發生變化的手指信息。 |
stopPropagation | () => void | 阻塞事件冒泡。 |
timestamp8+ | number | 事件時間戳,觸發事件時距離系統啟動的時間間隔。 例如,當系統啟動時間為2023/10/12 11:33, 在2023/10/12 11:34時觸發觸摸事件,時間戳返回的值為60,000,000,000ns。 單位:納秒 |
target8+ | [EventTarget] | 觸發事件的元素對象顯示區域。 |
source8+ | [SourceType] | 事件輸入設備。 |
getHistoricalPoints10+ | Array<[HistoricalPoint]> | 獲取當前幀所有的歷史點。不同設備每幀的觸摸事件頻率不同,當前幀所有的觸摸事件被稱為歷史點。 |
TouchObject對象說明
名稱 | 類型 | 描述 |
---|---|---|
type | [TouchType] | 觸摸事件的類型。 |
id | number | 手指唯一標識符。 |
x | number | 觸摸點相對于被觸摸元素左上角的X坐標。 |
y | number | 觸摸點相對于被觸摸元素左上角的Y坐標。 |
windowX10+ | number | 觸摸點相對于應用窗口左上角的X坐標。 |
windowY10+ | number | 觸摸點相對于應用窗口左上角的Y坐標。 |
displayX10+ | number | 觸摸點相對于應用屏幕左上角的X坐標。 |
displayY10+ | number | 觸摸點相對于應用屏幕左上角的Y坐標。 |
HistoricalPoint10+對象說明
名稱 | 類型 | 描述HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
---|---|---|
touchObject | [TouchObject] | 歷史點對應觸摸事件的基礎信息。 |
size | number | 歷史點對應觸摸事件的手指與屏幕的觸摸區域大小。 默認值:0 |
force | number | 歷史點對應觸摸事件的壓力大小。 默認值:0 取值范圍:[0,1],壓力越大值越大。 此接口根據硬件設備不同,支持情況不同。當前只支持Tablet。 |
timestamp | number | 歷史點對應觸摸事件的時間戳。觸發事件時距離系統啟動的時間間隔。 單位:毫秒 |
示例
// xxx.ets
@Entry
@Component
struct TouchExample {
@State text: string = ''
@State eventType: string = ''
build() {
Column() {
Button('Touch').height(40).width(100)
.onTouch((event?: TouchEvent) = > {
if(event){
if (event.type === TouchType.Down) {
this.eventType = 'Down'
}
if (event.type === TouchType.Up) {
this.eventType = 'Up'
}
if (event.type === TouchType.Move) {
this.eventType = 'Move'
}
this.text = 'TouchType:' + this.eventType + 'nDistance between touch point and touch element:nx: '
+ event.touches[0].x + 'n' + 'y: ' + event.touches[0].y + 'nComponent globalPos:('
+ event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')nwidth:'
+ event.target.area.width + 'nheight:' + event.target.area.height
}
})
Button('Touch').height(50).width(200).margin(20)
.onTouch((event?: TouchEvent) = > {
if(event){
if (event.type === TouchType.Down) {
this.eventType = 'Down'
}
if (event.type === TouchType.Up) {
this.eventType = 'Up'
}
if (event.type === TouchType.Move) {
this.eventType = 'Move'
}
this.text = 'TouchType:' + this.eventType + 'nDistance between touch point and touch element:nx: '
+ event.touches[0].x + 'n' + 'y: ' + event.touches[0].y + 'nComponent globalPos:('
+ event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')nwidth:'
+ event.target.area.width + 'nheight:' + event.target.area.height
}
})
Text(this.text)
}.width('100%').padding(30)
}
}
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
鴻蒙
+關注
關注
57文章
2396瀏覽量
43091
發布評論請先 登錄
相關推薦
鴻蒙ArkTS的起源和簡介
新的聲明式開發范式,基于Skia的自繪制引擎構建可跨平臺的獨立的渲染能力。這是一種較為創新的方案,不過也有幾點不足:
Dart語言生態。盡管
發表于 01-16 16:23
鴻蒙ArkTS聲明式開發:跨平臺支持列表【按鍵事件】
按鍵事件指組件與鍵盤、遙控器等按鍵設備交互時觸發的事件,適用于所有可獲焦組件,例如Button。對于Text,Image等默認不可獲焦的組件,可以設置focusable屬性為true后使用按鍵事件。
鴻蒙ArkTS聲明式開發:跨平臺支持列表【顯隱控制】 通用屬性
控制當前組件顯示或隱藏。注意,即使組件處于隱藏狀態,在頁面刷新時仍存在重新創建過程,因此當對性能有嚴格要求時建議使用[條件渲染]代替。 默認值:Visibility.Visible 從API version 9開始,該接口支持在ArkTS卡片中使用。
鴻蒙ArkTS聲明式開發:跨平臺支持列表【形狀裁剪】 通用屬性
參數為相應類型的組件,按指定的形狀對當前組件進行裁剪;參數為boolean類型時,設置是否按照父容器邊緣輪廓進行裁剪。 默認值:false 從API version 9開始,該接口支持在ArkTS卡片中使用。
鴻蒙ArkTS聲明式開發:跨平臺支持列表【分布式遷移標識】 通用屬性
組件的分布式遷移標識,指明了該組件在分布式遷移場景下可以將特定狀態恢復到對端設備。
鴻蒙ArkTS聲明式開發:跨平臺支持列表【觸摸測試控制】觸摸交互控制
設置組件的觸摸測試類型。ArkUI開發框架在處理觸屏事件時,會在觸屏事件觸發前,進行按壓點和組件區域的觸摸測試來收集需要響應觸屏事件的組件,然后基于觸摸測試結果分發相應的觸屏
評論