組件可見區域變化事件
組件可見區域變化事件是組件在屏幕中的顯示區域面積變化時觸發的事件,提供了判斷組件是否完全或部分顯示在屏幕中的能力,適用于廣告曝光埋點之類的場景。
說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
從API Version 9開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
事件
名稱 | 功能描述 |
---|---|
onVisibleAreaChange(ratios: Array, event: (isVisible: boolean, currentRatio: number) => void) | 組件可見區域變化時觸發該回調。 -ratios:閾值數組。其中,每個閾值代表組件可見面積(即組件在屏幕顯示區的面積)與組件自身面積的比值。當組件可見面積與自身面積的比值大于或小于閾值時,均會觸發該回調。每個閾值的取值范圍為[0.0, 1.0],如果開發者設置的閾值超出該范圍,則會實際取值0.0或1.0. -isVisible:表示組件的可見面積與自身面積的比值是否大于閾值,true表示大于,false表示小于。 -currentRatio:觸發回調時,組件可見面積與自身面積的比值。**說明:**該接口只適用于組件布局區域超出或離開了當前屏幕顯示區域的情況,不支持組件堆疊(Stack)導致的面積不可見、使用offset或translate等圖形變換接口導致的面積超出情況。 |
示例
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
// xxx.ets
@Entry
@Component
struct ScrollExample {
scroller: Scroller = new Scroller()
private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
@State testTextStr: string = 'test'
@State testRowStr: string = 'test'
build() {
Column() {
Column() {
Text(this.testTextStr)
.fontSize(20)
Text(this.testRowStr)
.fontSize(20)
}
.height(100)
.backgroundColor(Color.Gray)
.opacity(0.3)
Scroll(this.scroller) {
Column() {
Text("Test Text Visible Change")
.fontSize(20)
.height(200)
.margin({ top: 50, bottom: 20 })
.backgroundColor(Color.Green)
// 通過設置ratios為[0.0, 1.0],實現當組件完全顯示或完全消失在屏幕中時觸發回調
.onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) = > {
console.info('Test Text isVisible: ' + isVisible + ', currentRatio:' + currentRatio)
if (isVisible && currentRatio >= 1.0) {
console.info('Test Text is fully visible. currentRatio:' + currentRatio)
this.testTextStr = 'Test Text is fully visible'
}
if (!isVisible && currentRatio <= 0.0) {
console.info('Test Text is completely invisible.')
this.testTextStr = 'Test Text is completely invisible'
}
})
Row() {
Text('Test Row Visible Change')
.fontSize(20)
.margin({ bottom: 20 })
}
.height(200)
.backgroundColor(Color.Yellow)
.onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) = > {
console.info('Test Row isVisible:' + isVisible + ', currentRatio:' + currentRatio)
if (isVisible && currentRatio >= 1.0) {
console.info('Test Row is fully visible.')
this.testRowStr = 'Test Row is fully visible'
}
if (!isVisible && currentRatio <= 0.0) {
console.info('Test Row is is completely invisible.')
this.testRowStr = 'Test Row is is completely invisible'
}
})
ForEach(this.arr, (item) = > {
Text(item.toString())
.width('90%')
.height(150)
.backgroundColor(0xFFFFFF)
.borderRadius(15)
.fontSize(16)
.textAlign(TextAlign.Center)
.margin({ top: 10 })
}, item = > item)
}.width('100%')
}
.backgroundColor(0x317aff)
.scrollable(ScrollDirection.Vertical)
.scrollBar(BarState.On)
.scrollBarColor(Color.Gray)
.scrollBarWidth(10)
.onScroll((xOffset: number, yOffset: number) = > {
console.info(xOffset + ' ' + yOffset)
})
.onScrollEdge((side: Edge) = > {
console.info('To the edge')
})
.onScrollStop(() = > {
console.info('Scroll Stop')
})
}.width('100%').height('100%').backgroundColor(0xDCDCDC)
}
}
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
組件
+關注
關注
1文章
505瀏覽量
17805 -
鴻蒙
+關注
關注
57文章
2310瀏覽量
42746
發布評論請先 登錄
相關推薦
鴻蒙ArkTS聲明式開發:跨平臺支持列表【按鍵事件】
按鍵事件指組件與鍵盤、遙控器等按鍵設備交互時觸發的事件,適用于所有可獲焦組件,例如Button。對于Text,Image等默認不可獲焦的組件,可以設置focusable屬性為true后使用按鍵事件。
鴻蒙ArkTS聲明式開發:跨平臺支持列表【組件快捷鍵事件】
開發者可以設置組件的自定義組合鍵,組合鍵的行為與click行為一致,組件在未獲得焦點狀態下也可以響應自定義組合鍵,每個組件可以設置多個組合鍵。
鴻蒙ArkTS聲明式開發:跨平臺支持列表【顯隱控制】 通用屬性
控制當前組件顯示或隱藏。注意,即使組件處于隱藏狀態,在頁面刷新時仍存在重新創建過程,因此當對性能有嚴格要求時建議使用[條件渲染]代替。 默認值:Visibility.Visible 從API version 9開始,該接口支持在
鴻蒙ArkTS聲明式開發:跨平臺支持列表【形狀裁剪】 通用屬性
參數為相應類型的組件,按指定的形狀對當前組件進行裁剪;參數為boolean類型時,設置是否按照父容器邊緣輪廓進行裁剪。 默認值:false 從API version 9開始,該接口支持在Ark
鴻蒙ArkTS聲明式開發:跨平臺支持列表【觸摸測試控制】觸摸交互控制
設置組件的觸摸測試類型。ArkUI開發框架在處理觸屏事件時,會在觸屏事件觸發前,進行按壓點和組件區域的觸摸測試來收集需要響應觸屏事件的組件,
評論