Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
7caf88df
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7caf88df
编写于
7月 06, 2022
作者:
X
xuzhidan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add onVisibleAreaChange callback.
Signed-off-by:
N
xuzhidan
<
xuzhidan1@huawei.com
>
上级
6c7f6d42
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
119 addition
and
0 deletion
+119
-0
zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_visible_area_change.gif
.../reference/arkui-ts/figures/zh-cn_visible_area_change.gif
+0
-0
zh-cn/application-dev/reference/arkui-ts/ts-universal-component-visible-area-change-event.md
...ui-ts/ts-universal-component-visible-area-change-event.md
+119
-0
未找到文件。
zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_visible_area_change.gif
0 → 100644
浏览文件 @
7caf88df
729.8 KB
zh-cn/application-dev/reference/arkui-ts/ts-universal-component-visible-area-change-event.md
0 → 100644
浏览文件 @
7caf88df
# 组件可见区域变化事件
组件可见区域变化事件指组件在屏幕中显示的面积变化,提供了判断组件是否完全或部分显示在屏幕中的能力,通常适用于像广告曝光埋点之类的场景。
> **说明:**从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 权限列表
无
## 事件
| 名称 | 功能描述 |
| -------- | -------- |
| onVisibleAreaChange(ratios: Array
<number>
, event: (isVisible: boolean, currentRatio: number) => void) | 组件可见区域变化时触发该回调。
<br/>
-ratios:阈值数组。其中,每个阈值代表组件可见面积(即组件在屏幕显示区的面积)与组件自身面积的比值。当组件可见面积与自身面积的比值大于或小于阈值时,均会触发该回调。每个阈值的取值范围为[0.0, 1.0],如果开发者设置的阈值超出该范围,则会实际取值0.0或1.0.
<br/>
-isVisible:表示组件的可见面积与自身面积的比值是否大于阈值,true表示大于,false表示小于。
<br/>
-currentRatio:触发回调时,组件可见面积与自身面积的比值。 |
## 示例
```
ts
// 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
(
30
)
.
onScroll
((
xOffset
:
number
,
yOffset
:
number
)
=>
{
console
.
info
(
xOffset
+
'
'
+
yOffset
)
})
.
onScrollEdge
((
side
:
Edge
)
=>
{
console
.
info
(
'
To the edge
'
)
})
.
onScrollEnd
(()
=>
{
console
.
info
(
'
Scroll Stop
'
)
})
}.
width
(
'
100%
'
).
height
(
'
100%
'
).
backgroundColor
(
0xDCDCDC
)
}
}
```
![
zh-cn_visible_area_change.gif
](
figures/zh-cn_visible_area_change.gif
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录