1# Swiper 2 3 滑块视图容器,提供子组件滑动轮播显示的能力。 4 5> **说明:** 6> 7> - 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8> 9> - Swiper组件[通用属性clip](ts-universal-attributes-sharp-clipping.md)的默认值为true。 10> 11> - Swiper组件内包含了[PanGesture](ts-basic-gestures-pangesture.md)拖动手势事件,用于滑动轮播子组件。[disableSwipe](#disableswipe8)属性设为true会取消内部的PanGesture事件监听。 12 13## 子组件 14 15可以包含子组件。 16 17> **说明:** 18> 19> - 子组件类型:系统组件和自定义组件,支持渲染控制类型([if/else](../../../quick-start/arkts-rendering-control-ifelse.md)、[ForEach](../../../quick-start/arkts-rendering-control-foreach.md)、[LazyForEach](../../../quick-start/arkts-rendering-control-lazyforeach.md)和[Repeat](../../../quick-start/arkts-new-rendering-control-repeat.md))。不建议子组件中混用懒加载组件(包括LazyForEach、Repeat)和非懒加载组件,或者子组件中使用多个懒加载组件,否则可能导致懒加载组件预加载能力失效等问题。 20> 21> - Swiper子组件的visibility属性设置为None,Swiper的displayCount属性设置为'auto'时,对应子组件在视窗内不占位,但不影响导航点个数。 22> 23> - Swiper子组件的visibility属性设置为None,或者visibility属性设置为Hidden时,对应子组件不显示,但依然会在视窗内占位。 24> 25> - 当Swiper子组件个数小于等于Swiper组件内容区内显示的节点总个数(totalDisplayCount = DisplayCount + prevMargin? (1 : 0) + nextMargin? (1 : 0))时,一般按照非循环模式布局处理,此时,前后边距对应子组件不显示,但依然会在视窗内占位。Swiper组件按照totalDisplayCount个数判断测算规格。例外情况如下: 26> 27> - 当Swiper子组件个数等于Swiper组件内容区内显示的节点总个数且prevMargin和nextMargin都生效时,设置loop为true支持循环。 28> 29> - 当Swiper子组件个数等于Swiper组件DisplayCount数 + 1,且prevMargin和nextMargin至少一个生效时,设置loop为true会生成截图占位组件(如果使用图片异步加载等显示耗时较长的组件可能不能正确生成截图,不建议在该场景开启循环),支持循环。 30> 31> - 当Swiper子组件设置了offset属性时,会按照子组件的层级进行绘制,层级高的子组件会覆盖层级低的子组件。例如,Swiper包含3个子组件,其中第3个子组件设置了offset({ x : 100 }),那么在横向循环滑动中,第3个子组件会覆盖第1个子组件,此时可设置第1个子组件的zIndex属性值大于第3个子组件,使第1个子组件层级高于第3个子组件。 32> 33> - 不建议在执行翻页动画过程中增加或减少子组件,会导致未进行动画的子组件提前进入视窗,引起显示异常。 34 35## 接口 36 37Swiper(controller?: SwiperController) 38 39**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 40 41**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 42 43**系统能力:** SystemCapability.ArkUI.ArkUI.Full 44 45**参数:** 46 47| 参数名 | 类型 | 必填 | 说明 | 48| ---------- | ------------------------------------- | ---- | -------------------- | 49| controller | [SwiperController](#swipercontroller) | 否 | 给组件绑定一个控制器,用来控制组件翻页。 | 50 51 52## 属性 53 54除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性: 55 56### index 57 58index(value: number) 59 60设置当前在容器中显示的子组件的索引值。设置小于0或大于等于子组件数量时,按照默认值0处理。 61 62从API version 10开始,该属性支持[$$](../../../quick-start/arkts-two-way-sync.md)双向绑定变量。 63 64**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 65 66**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 67 68**系统能力:** SystemCapability.ArkUI.ArkUI.Full 69 70**参数:** 71 72| 参数名 | 类型 | 必填 | 说明 | 73| ------ | ------ | ---- | ------------------------------------------------ | 74| value | number | 是 | 当前在容器中显示的子组件的索引值。<br/>默认值:0 <br/>**说明:** <br/>设置的值小于0或大于最大页面索引时,取0。| 75 76### autoPlay 77 78autoPlay(value: boolean) 79 80设置子组件是否自动播放。 81 82loop为false时,自动轮播到最后一页时停止轮播。手势切换后不是最后一页时继续播放。当Swiper不可见时会停止轮播。 83 84**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 85 86**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 87 88**系统能力:** SystemCapability.ArkUI.ArkUI.Full 89 90**参数:** 91 92| 参数名 | 类型 | 必填 | 说明 | 93| ------ | ------- | ---- | -------------------------------------- | 94| value | boolean | 是 | 子组件是否自动播放。<br/>默认值:false | 95 96### interval 97 98interval(value: number) 99 100设置使用自动播放时播放的时间间隔。 101 102**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 103 104**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 105 106**系统能力:** SystemCapability.ArkUI.ArkUI.Full 107 108**参数:** 109 110| 参数名 | 类型 | 必填 | 说明 | 111| ------ | ------ | ---- | ---------------------------------------------------------- | 112| value | number | 是 | 自动播放时播放的时间间隔。<br/>默认值:3000<br/>单位:毫秒 | 113 114### indicator 115 116indicator(value: DotIndicator | DigitIndicator | boolean) 117 118设置可选导航点指示器样式。 119 120**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 121 122**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 123 124**系统能力:** SystemCapability.ArkUI.ArkUI.Full 125 126**参数:** 127 128| 参数名 | 类型 | 必填 | 说明 | 129| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 130| value | [DotIndicator](#dotindicator10)<sup>10+</sup> \| [DigitIndicator](#digitindicator10)<sup>10+</sup> \| boolean | 是 | 可选导航点指示器样式。<br/> \- DotIndicator:圆点指示器样式。<br/> \- DigitIndicator:数字指示器样式。<br/> \- boolean:是否启用导航点指示器。设置为true启用,false不启用。<br/> 默认值:true<br/> 默认类型:DotIndicator | 131 132### loop 133 134loop(value: boolean) 135 136设置是否开启循环。设置为true时表示开启循环,在LazyForEach懒循环加载模式下,加载的组件数量建议大于5个。 137 138**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 139 140**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 141 142**系统能力:** SystemCapability.ArkUI.ArkUI.Full 143 144**参数:** 145 146| 参数名 | 类型 | 必填 | 说明 | 147| ------ | ------- | ---- | ------------------------------- | 148| value | boolean | 是 | 是否开启循环。<br/>默认值:true | 149 150### duration 151 152duration(value: number) 153 154设置子组件切换的动画时长。 155 156duration需要和[curve](#curve8)一起使用。 157 158curve默认曲线为[interpolatingSpring](../js-apis-curve.md#curvesinterpolatingspring10),此时动画时长只受曲线自身参数影响,不再受duration的控制。不受duration控制的曲线可以查阅[插值计算](../js-apis-curve.md)模块,比如,[springMotion](../js-apis-curve.md#curvesspringmotion9) 159、[responsiveSpringMotion](../js-apis-curve.md#curvesresponsivespringmotion9)和interpolatingSpring类型的曲线不受duration控制。如果希望动画时长受到duration控制,需要给curve设置其他曲线。 160 161**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 162 163**系统能力:** SystemCapability.ArkUI.ArkUI.Full 164 165**参数:** 166 167| 参数名 | 类型 | 必填 | 说明 | 168| ------ | ------ | ---- | ----------------------------------------------------- | 169| value | number | 是 | 子组件切换的动画时长。<br/>默认值:400<br/>单位:毫秒 | 170 171### vertical 172 173vertical(value: boolean) 174 175设置是否为纵向滑动。 176 177**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 178 179**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 180 181**系统能力:** SystemCapability.ArkUI.ArkUI.Full 182 183**参数:** 184 185| 参数名 | 类型 | 必填 | 说明 | 186| ------ | ------- | ---- | ---------------------------------- | 187| value | boolean | 是 | 是否为纵向滑动。true为纵向滑动,false为横向滑动。<br/>默认值:false | 188 189### itemSpace 190 191itemSpace(value: number | string) 192 193设置子组件与子组件之间间隙。不支持设置百分比。 194 195类型为number时,默认单位vp。类型为string时,需要显式指定像素单位,如'10px';未指定像素单位时,如'10',单位为vp。 196 197**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 198 199**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 200 201**系统能力:** SystemCapability.ArkUI.ArkUI.Full 202 203**参数:** 204 205| 参数名 | 类型 | 必填 | 说明 | 206| ------ | -------------------------- | ---- | -------------------------------------- | 207| value | number \| string | 是 | 子组件与子组件之间间隙。<br/>默认值:0 | 208 209### displayMode 210 211displayMode(value: SwiperDisplayMode) 212 213设置主轴方向上元素排列的模式,优先以displayCount设置的个数显示,displayCount未设置时本属性生效。 214 215**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 216 217**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 218 219**系统能力:** SystemCapability.ArkUI.ArkUI.Full 220 221**参数:** 222 223| 参数名 | 类型 | 必填 | 说明 | 224| ------ | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 225| value | [SwiperDisplayMode](#swiperdisplaymode枚举说明) | 是 | 主轴方向上元素排列的模式。<br/>默认值:SwiperDisplayMode.STRETCH | 226 227### cachedCount<sup>8+</sup> 228 229cachedCount(value: number) 230 231设置预加载子组件个数,以当前页面为基准,加载当前显示页面的前后个数。例如cachedCount=1时,会将当前显示的页面的前面一页和后面一页的子组件都预加载。如果设置为按组翻页,即displayCount的swipeByGroup参数设为true,预加载时会以组为基本单位。例如cachedCount=1,swipeByGroup=true时,会将当前组的前面一组和后面一组的子组件都预加载。 232 233**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 234 235**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 236 237**系统能力:** SystemCapability.ArkUI.ArkUI.Full 238 239**参数:** 240 241| 参数名 | 类型 | 必填 | 说明 | 242| ------ | ------ | ---- | -------------------------------- | 243| value | number | 是 | 预加载子组件个数。<br/>默认值:1 | 244 245### disableSwipe<sup>8+</sup> 246 247disableSwipe(value: boolean) 248 249设置禁用组件滑动切换功能。 250 251**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 252 253**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 254 255**系统能力:** SystemCapability.ArkUI.ArkUI.Full 256 257**参数:** 258 259| 参数名 | 类型 | 必填 | 说明 | 260| ------ | ------- | ---- | ---------------------------------------- | 261| value | boolean | 是 | 禁用组件滑动切换功能。设置为true禁用,false不禁用。<br/>默认值:false | 262 263### curve<sup>8+</sup> 264 265curve(value: Curve | string | ICurve) 266 267设置Swiper的动画曲线,默认为弹簧插值曲线,常用曲线参考[Curve枚举说明](ts-appendix-enums.md#curve),也可以通过[插值计算](../js-apis-curve.md)模块提供的接口创建自定义的插值曲线对象。 268 269**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 270 271**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 272 273**系统能力:** SystemCapability.ArkUI.ArkUI.Full 274 275**参数:** 276 277| 参数名 | 类型 | 必填 | 说明 | 278| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------- | 279| value | [Curve](ts-appendix-enums.md#curve) \| string \| [ICurve](../js-apis-curve.md#icurve9)<sup>10+</sup> | 是 | Swiper的动画曲线。<br/>默认值:interpolatingSpring(-1, 1, 328, 34) | 280 281### indicatorStyle<sup>(deprecated)</sup> 282 283indicatorStyle(value?: IndicatorStyle) 284 285设置导航点样式。 286 287从API version 8开始支持,从API version 10开始不再维护,建议使用[indicator](#indicator10)代替。 288 289**系统能力:** SystemCapability.ArkUI.ArkUI.Full 290 291**参数:** 292 293| 参数名 | 类型 | 必填 | 说明 | 294| ------ | --------------------------------------------------- | ---- | ------------ | 295| value | [IndicatorStyle](#indicatorstyledeprecated对象说明) | 否 | 导航点样式。 | 296 297### displayCount<sup>8+</sup> 298 299displayCount(value: number | string | SwiperAutoFill, swipeByGroup?: boolean) 300 301设置Swiper视窗内元素显示个数。 302 303字符串类型仅支持设置为'auto'。 304 305使用number类型且设置小于等于0时,按默认值1显示。 306 307使用number类型时,子组件按照主轴均分Swiper宽度(减去displayCount-1个itemSpace)的方式进行主轴拉伸(收缩)布局。 308 309使用SwiperAutoFill类型时,通过设置一个子组件最小宽度值minSize,会根据Swiper当前宽度和minSize值自动计算并更改一页内元素显示个数。当minSize为空或者小于等于0时,Swiper显示1列。 310 311当按组进行翻页时,如果最后一组的子元素数量小于displayCount时,会使用占位子元素补齐。占位子元素只是用于布局占位,不显示任何内容。在占位子元素的位置会直接显示Swiper自身的背景样式。 312 313在按组翻页时,判断翻页的拖拽距离阈值条件,会更新为Swiper自身宽度的一半。(按子元素翻页时,该阈值为子元素自身宽度的一半)。 314 315**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 316 317**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 318 319**系统能力:** SystemCapability.ArkUI.ArkUI.Full 320 321**参数:** 322 323| 参数名 | 类型 | 必填 | 说明 | 324| -------------------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 325| value | number \| string \| [SwiperAutoFill](#swiperautofill10对象说明)<sup>10+</sup> | 是 | 视窗内显示的子元素个数。<br/> 默认值:1 | 326| swipeByGroup<sup>11+</sup> | boolean | 否 | 是否按组进行翻页。如果设为true,在翻页时会按组进行翻页,每组内子元素的数量为displayCount value的值;如果为false,则为默认翻页行为,即按照子元素进行翻页。<br/> 默认值:false | 327 328### effectMode<sup>8+</sup> 329 330effectMode(value: EdgeEffect) 331 332设置边缘滑动效果,loop = false时生效。 目前支持的滑动效果参见EdgeEffect的枚举说明。控制器接口调用时不生效回弹。 333 334**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 335 336**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 337 338**系统能力:** SystemCapability.ArkUI.ArkUI.Full 339 340**参数:** 341 342| 参数名 | 类型 | 必填 | 说明 | 343| ------ | --------------------------------------------- | ---- | -------------------------------------------- | 344| value | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 是 | 边缘滑动效果。<br/>默认值:EdgeEffect.Spring | 345 346### displayArrow<sup>10+</sup> 347 348displayArrow(value: ArrowStyle | boolean, isHoverShow?: boolean) 349 350设置导航点箭头样式。 351 352**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 353 354**系统能力:** SystemCapability.ArkUI.ArkUI.Full 355 356**参数:** 357 358| 参数名 | 类型 | 必填 | 说明 | 359| -------------------------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ | 360| value | [ArrowStyle](#arrowstyle10对象说明) \| boolean | 是 | 支持设置箭头和底板样式,异常场景使用ArrowStyle对象中的默认值。设置为false不显示箭头和底板,true显示默认的箭头和底板样式。<br/>默认值:false | 361| isHoverShow | boolean | 否 | 设置鼠标悬停时是否显示箭头。<br/>默认值:false<br/>**说明:**<br/>isHoverShow为false时,常驻显示箭头,支持点击翻页。<br/>isHoverShow为true时,只有在鼠标悬停时才会显示箭头,并支持点击翻页。 | 362 363> **说明:** 364> 365> Swiper视窗内显示所有子节点时,只显示一屏,无法翻页,左右翻页箭头均不显示。 366 367### nextMargin<sup>10+</sup> 368 369nextMargin(value: Length, ignoreBlank?:boolean) 370 371设置后边距,用于露出后一项的一小部分。仅当Swiper子组件的布局方式为拉伸时生效,主要包括两种场景:1、displayMode属性设置为SwiperDisplayMode.STRETCH;2、displayCount属性设置为number类型。 372 373当主轴方向为横向布局时,nextMargin/prevMargin中任意一个大于子组件测算的宽度,nextMargin和prevMargin均不显示。 374 375当主轴方向为纵向布局时,nextMargin/prevMargin中任意一个大于子组件测算的高度,nextMargin和prevMargin均不显示。 376 377**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 378 379**系统能力:** SystemCapability.ArkUI.ArkUI.Full 380 381**参数:** 382 383| 参数名 | 类型 | 必填 | 说明 | 384| ------ | ---------------------------- | ---- | ---------------------- | 385| value | [Length](ts-types.md#length) | 是 | 后边距。<br/>默认值:0 | 386| ignoreBlank<sup>12+</sup> | boolean | 否 | 非loop场景下尾页不显示nextMargin。在非loop场景下,设置为true时,尾页不显示空白的nextMargin,尾页的右边缘与Swiper视窗右边缘对齐;设置false时,尾页显示空白nextMargin,尾页的右边缘与Swiper视窗右边缘的距离为nextMargin。<br/>默认值:false <br/>**说明:**<br/>尾页场景下,prevMargin和nextMargin的值相加作为左边边距显示前一个页面。 | 387 388### prevMargin<sup>10+</sup> 389 390prevMargin(value: Length, ignoreBlank?:boolean) 391 392设置前边距,用于露出前一项的一小部分。仅当Swiper子组件的布局方式为拉伸时生效,主要包括两种场景:1、displayMode属性设置为SwiperDisplayMode.STRETCH;2、displayCount属性设置为number类型。 393 394当主轴方向为横向布局时,nextMargin/prevMargin中任意一个大于子组件测算的宽度,nextMargin和prevMargin均不显示。 395 396当主轴方向为纵向布局时,nextMargin/prevMargin中任意一个大于子组件测算的高度,nextMargin和prevMargin均不显示。 397 398**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 399 400**系统能力:** SystemCapability.ArkUI.ArkUI.Full 401 402**参数:** 403 404| 参数名 | 类型 | 必填 | 说明 | 405| ------ | ---------------------------- | ---- | ---------------------- | 406| value | [Length](ts-types.md#length) | 是 | 前边距。<br/>默认值:0 | 407| ignoreBlank<sup>12+</sup> | boolean | 否 | 非loop场景下首页不显示prevMargin。在非loop场景下,设置为true时,首页不显示空白的prevMargin,首页的左边缘与Swiper视窗左边缘对齐;设置false时,首页显示空白prevMargin,首页的左边缘与Swiper视窗左边缘的距离为prevMargin。<br/>默认值:false <br/>**说明:**<br/>首页场景下,prevMargin和nextMargin的值相加作为右边边距显示后一个页面。| 408 409### nestedScroll<sup>11+</sup> 410 411nestedScroll(value: SwiperNestedScrollMode) 412 413设置Swiper组件和父组件的嵌套滚动模式。loop为true时Swiper组件没有边缘,不会触发父组件嵌套滚动。 414 415**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 416 417**系统能力:** SystemCapability.ArkUI.ArkUI.Full 418 419**参数:** 420 421| 参数名 | 类型 | 必填 | 说明 | 422| ------ | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | 423| value | [SwiperNestedScrollMode](#swipernestedscrollmode11枚举说明) | 是 | Swiper组件和父组件的嵌套滚动模式。<br/>默认值:SwiperNestedScrollMode.SELF_ONLY | 424 425> **说明:** 426> 427> 由于Swiper的抛滑动画逻辑和其它滚动类组件不同(Swiper一次只能滑动一页,抛滑时做翻页动画),当Swiper内嵌套其它滚动组件时,如果Swiper的翻页动画已经启动,将无法接受子节点上传的滚动偏移量。这时Swiper的翻页动画和子节点的边缘效果动画会同时执行。 428 429### indicatorInteractive<sup>12+</sup> 430 431indicatorInteractive(value: boolean) 432 433设置禁用组件导航点交互功能。设置为true时表示导航点可交互。 434 435**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 436 437**系统能力:** SystemCapability.ArkUI.ArkUI.Full 438 439**参数:** 440 441| 参数名 | 类型 | 必填 | 说明 | 442| ------ | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | 443| value | boolean | 是 | 导航点是否可交互。<br/>默认值:true | 444 445## IndicatorStyle<sup>(deprecated)</sup>对象说明 446 447从API version 8开始支持,从API version 10开始不再维护,建议使用[indicator](#indicator10)代替。 448 449**系统能力:** SystemCapability.ArkUI.ArkUI.Full 450 451| 名称 | 类型 | 必填 | 说明 | 452| ------------- | ------------------------------------------ | ---- | ---------------------------------------------------- | 453| left | [Length](ts-types.md#length) | 否 | 设置导航点左侧相对于Swiper的位置。<br/>未设置left和right时,进行自适应大小布局,按照指示器本身大小和Swiper的大小在主轴方向上进行居中对齐<br/>设置为0时:按照0位置布局计算<br/>优先级:高于right属性<br/>取值范围:[0,Swiper宽度-导航点区域宽度],超出该范围时,取最近的的边界值。 | 454| top | [Length](ts-types.md#length) | 否 | 设置导航点顶部相对于Swiper的位置。<br/>未设置top和bottom时,进行自适应大小布局,按照指示器本身大小和Swiper的大小,在交叉轴方向上,位于底部,效果与设置bottom=0一致<br/>设置为0时:按照0位置布局计算<br/>优先级:高于bottom属性<br/>取值范围:[0,Swiper高度-导航点区域高度],超出该范围时,取最近的边界值。 | 455| right | [Length](ts-types.md#length) | 否 | 设置导航点右侧相对于Swiper的位置。<br/>未设置left和right时,进行自适应大小布局,按照指示器本身大小和Swiper的大小在主轴方向上进行居中对齐<br/>设置为0时:按照0位置布局计算<br/>优先级:低于left属性<br/>取值范围:[0,Swiper宽度-导航点区域宽度],超出该范围时,取最近的边界值。 | 456| bottom | [Length](ts-types.md#length) | 否 | 设置导航点底部相对于Swiper的位置。<br/>未设置top和bottom时,进行自适应大小布局,按照指示器本身大小和Swiper的大小,在交叉轴方向上,位于底部,效果与设置bottom=0一致<br/>设置为0时:按照0位置布局计算<br/>优先级:低于top属性<br/>取值范围:[0,Swiper高度-导航点区域高度],超出该范围时,取最近的边界值。 | 457| size | [Length](ts-types.md#length) | 否 | 设置导航点的直径,不支持设置百分比。<br/>默认值:6vp | 458| mask | boolean | 否 | 设置是否显示导航点蒙层样式。 | 459| color | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置导航点的颜色。 | 460| selectedColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置选中的导航点的颜色。 | 461 462## SwiperDisplayMode枚举说明 463 464Swiper在主轴上的尺寸大小模式枚举。 465 466**系统能力:** SystemCapability.ArkUI.ArkUI.Full 467 468| 名称 | 说明 | 469| ---------------------------------- | ------------------------------------------------------------ | 470| Stretch<sup>(deprecated)</sup> | Swiper滑动一页的宽度为Swiper组件自身的宽度。<br>从API version 10开始不再维护,建议使用STRETCH代替。<br/>**卡片能力:** 从API version 7开始,该接口支持在ArkTS卡片中使用。 | 471| AutoLinear<sup>(deprecated)</sup> | Swiper滑动一页的宽度为子组件宽度中的最大值。<br>从API version 10开始不再维护,建议使用[Scroller.scrollTo](ts-container-scroll.md#scrollto)代替。<br/>**卡片能力:** 从API version 7开始,该接口支持在ArkTS卡片中使用。 | 472| STRETCH<sup>10+</sup> | Swiper滑动一页的宽度为Swiper组件自身的宽度。<br/>**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 473| AUTO_LINEAR<sup>(deprecated)</sup> | Swiper滑动一页的宽度为视窗内最左侧子组件的宽度。<br/>从API version 10开始支持,从API version 12开始不再维护,建议使用[Scroller.scrollTo](ts-container-scroll.md#scrollto)代替。<br/>**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 474 475## SwiperNestedScrollMode<sup>11+</sup>枚举说明 476 477Swiper组件和父组件的嵌套滚动模式枚举。 478 479**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 480 481**系统能力:** SystemCapability.ArkUI.ArkUI.Full 482 483| 名称 | 值 | 说明 | 484| ------------ | -- | ---------------------------------------- | 485| SELF_ONLY | 0 | Swiper只自身滚动,不与父组件联动。 | 486| SELF_FIRST | 1 | Swiper自身先滚动,自身滚动到边缘以后父组件滚动。父组件滚动到边缘以后,如果父组件有边缘效果,则父组件触发边缘效果,否则Swiper触发边缘效果。 | 487 488## SwiperController 489 490Swiper容器组件的控制器,可以将此对象绑定至Swiper组件,可以通过它控制翻页。 491 492**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 493 494**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 495 496**系统能力:** SystemCapability.ArkUI.ArkUI.Full 497 498### 导入对象 499 500```ts 501let controller: SwiperController = new SwiperController() 502``` 503 504### constructor 505 506constructor() 507 508SwiperController的构造函数。 509 510**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 511 512**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 513 514**系统能力:** SystemCapability.ArkUI.ArkUI.Full 515 516### showNext 517 518showNext() 519 520翻至下一页。翻页带动效切换过程,时长通过duration指定。 521 522**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 523 524**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 525 526**系统能力:** SystemCapability.ArkUI.ArkUI.Full 527 528### showPrevious 529 530showPrevious() 531 532翻至上一页。翻页带动效切换过程,时长通过duration指定。 533 534**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 535 536**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 537 538**系统能力:** SystemCapability.ArkUI.ArkUI.Full 539 540### changeIndex<sup>12+</sup> 541 542changeIndex(index: number, useAnimation?: boolean) 543 544翻至指定页面。 545 546**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。 547 548**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 549 550**系统能力:** SystemCapability.ArkUI.ArkUI.Full 551 552**参数:** 553 554| 参数名 | 类型 | 必填 | 说明 | 555| -------- | ---------- | ---- | -------- | 556| index| number | 是 | 指定页面在Swiper中的索引值。<br/>**说明:** <br/>设置的值小于0或大于最大页面索引时,取0。 | 557| useAnimation| boolean | 否 | 设置翻至指定页面时是否有动效,true表示有动效,false表示没有动效。<br/>默认值:false。 | 558 559### finishAnimation 560 561finishAnimation(callback?: () => void) 562 563停止播放动画。 564 565**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 566 567**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 568 569**系统能力:** SystemCapability.ArkUI.ArkUI.Full 570 571**参数:** 572 573| 参数名 | 类型 | 必填 | 说明 | 574| -------- | ---------- | ---- | -------- | 575| callback | () => void | 否 | 动画结束的回调。 | 576 577## Indicator<sup>10+</sup> 578 579设置导航点距离Swiper组件距离。由于导航点有默认交互区域,交互区域高度为32vp, 所以无法让显示部分完全贴底。 580 581**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 582 583**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 584 585**系统能力:** SystemCapability.ArkUI.ArkUI.Full 586 587### left 588 589left(value: Length) 590 591导航点左侧相对于Swiper的位置。 592 593**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 594 595**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 596 597**系统能力:** SystemCapability.ArkUI.ArkUI.Full 598 599**参数:** 600 601| 参数名 | 类型 | 必填 | 说明 | 602| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 603| value | [Length](ts-types.md#length) | 是 | 设置导航点左侧相对于Swiper的位置。<br/>未设置left和right时,进行自适应大小布局,按照指示器本身大小和Swiper的大小在主轴方向上进行居中对齐。<br/>设置为0时:按照0位置布局计算。<br/>优先级:高于right属性。<br/>取值范围:[0,Swiper宽度-导航点区域宽度],超出该范围时,取最近的的边界值。 | 604 605### top 606 607top(value: Length) 608 609导航点顶部相对于Swiper的位置。 610 611**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 612 613**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 614 615**系统能力:** SystemCapability.ArkUI.ArkUI.Full 616 617**参数:** 618 619| 参数名 | 类型 | 必填 | 说明 | 620| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 621| value | [Length](ts-types.md#length) | 是 | 设置导航点顶部相对于Swiper的位置。<br/>未设置top和bottom时,进行自适应大小布局,按照指示器本身大小和Swiper的大小,在交叉轴方向上,位于底部,效果与设置bottom=0一致。<br/>设置为0时:按照0位置布局计算。<br/>优先级:高于bottom属性。<br/>取值范围:[0,Swiper高度-导航点区域高度],超出该范围时,取最近的边界值。 | 622 623### right 624 625right(value: Length) 626 627导航点右侧相对于Swiper的位置。 628 629**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 630 631**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 632 633**系统能力:** SystemCapability.ArkUI.ArkUI.Full 634 635**参数:** 636 637| 参数名 | 类型 | 必填 | 说明 | 638| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 639| value | [Length](ts-types.md#length) | 是 | 设置导航点右侧相对于Swiper的位置。<br/>未设置left和right时,进行自适应大小布局,按照指示器本身大小和Swiper的大小在主轴方向上进行居中对齐。<br/>设置为0时:按照0位置布局计算。<br/>优先级:低于left属性。<br/>取值范围:[0,Swiper宽度-导航点区域宽度],超出该范围 时,取最近的边界值。 | 640 641### bottom 642 643bottom(value: Length) 644 645导航点底部相对于Swiper的位置。 646 647**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 648 649**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 650 651**系统能力:** SystemCapability.ArkUI.ArkUI.Full 652 653**参数:** 654 655| 参数名 | 类型 | 必填 | 说明 | 656| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 657| value | [Length](ts-types.md#length) | 是 | 设置导航点底部相对于Swiper的位置。<br/>未设置top和bottom时,进行自适应大小布局,按照指示器本身大小和Swiper的大小,在交叉轴方向上,位于底部,效果与设置bottom=0一致。<br/>设置为0时:按照0位置布局计算。<br/>优先级:低于top属性。<br/>取值范围:[0,Swiper高度-导航点区域高度],超出该范围时,取最近的边界值。 | 658 659### start<sup>12+</sup> 660 661start(value: LengthMetrics) 662 663在RTL模式下为导航点距离Swiper组件右边的距离,在LTR模式下为导航点距离Swiper组件左边的距离。 664 665**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。 666 667**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 668 669**系统能力:** SystemCapability.ArkUI.ArkUI.Full 670 671**参数:** 672 673| 参数名 | 类型 | 必填 | 说明 | 674| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 675| value | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 是 | 设置在RTL模式下为导航点距离Swiper组件右边的距离,在LTR模式下为导航点距离Swiper组件左边的距离<br/>默认值:0<br/>单位:vp | 676 677### end<sup>12+</sup> 678 679end(value: LengthMetrics) 680 681在RTL模式下为导航点距离Swiper组件左边的距离,在LTR模式下为导航点距离Swiper组件右边的距离。 682 683**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。 684 685**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 686 687**系统能力:** SystemCapability.ArkUI.ArkUI.Full 688 689**参数:** 690 691| 参数名 | 类型 | 必填 | 说明 | 692| ------ | ---------------------------- | ---- | ---------------------------------------- | 693| value | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 是 | 设置在RTL模式下为导航点距离Swiper组件左边的距离,在LTR模式下为导航点距离Swiper组件右边的距离。<br/>默认值:0<br/>单位:vp <br/>**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 694 695### dot 696 697static dot(): DotIndicator 698 699返回一个DotIndicator对象。 700 701**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 702 703**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 704 705**系统能力:** SystemCapability.ArkUI.ArkUI.Full 706 707### digit 708 709static digit(): DigitIndicator 710 711返回一个DigitIndicator对象。 712 713**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 714 715**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 716 717**系统能力:** SystemCapability.ArkUI.ArkUI.Full 718 719## DotIndicator<sup>10+</sup> 720 721圆点指示器属性及功能继承自[Indicator](#indicator10)。 722 723**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 724 725**系统能力:** SystemCapability.ArkUI.ArkUI.Full 726 727### itemWidth 728 729itemWidth(value: Length) 730 731Swiper组件圆点导航指示器的宽,不支持设置百分比。 732 733**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 734 735**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 736 737**系统能力:** SystemCapability.ArkUI.ArkUI.Full 738 739**参数:** 740 741| 参数名 | 类型 | 必填 | 说明 | 742| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 743| value | [Length](ts-types.md#length) | 是 | 设置Swiper组件圆点导航指示器的宽,不支持设置百分比。<br/>默认值:6<br/>单位:vp | 744 745### itemHeight 746 747itemHeight(value: Length) 748 749Swiper组件圆点导航指示器的高,不支持设置百分比。 750 751**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 752 753**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 754 755**系统能力:** SystemCapability.ArkUI.ArkUI.Full 756 757**参数:** 758 759| 参数名 | 类型 | 必填 | 说明 | 760| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 761| value | [Length](ts-types.md#length) | 是 | 设置Swiper组件圆点导航指示器的高,不支持设置百分比。<br/>默认值:6<br/>单位:vp | 762 763### selectedItemWidth 764 765selectedItemWidth(value: Length) 766 767选中Swiper组件圆点导航指示器的宽,不支持设置百分比。 768 769**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 770 771**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 772 773**系统能力:** SystemCapability.ArkUI.ArkUI.Full 774 775**参数:** 776 777| 参数名 | 类型 | 必填 | 说明 | 778| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 779| value | [Length](ts-types.md#length) | 是 | 设置选中Swiper组件圆点导航指示器的宽,不支持设置百分比。<br/>默认值:12<br/>单位:vp | 780 781### selectedItemHeight 782 783selectedItemHeight(value: Length) 784 785选中Swiper组件圆点导航指示器的高,不支持设置百分比。 786 787**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 788 789**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 790 791**系统能力:** SystemCapability.ArkUI.ArkUI.Full 792 793**参数:** 794 795| 参数名 | 类型 | 必填 | 说明 | 796| ------ | ---------------------------- | ---- | ------------------------------------------------------------ | 797| value | [Length](ts-types.md#length) | 是 | 设置选中Swiper组件圆点导航指示器的高,不支持设置百分比。<br/>默认值:6<br/>单位:vp | 798 799### mask 800 801mask(value: boolean) 802 803是否显示Swiper组件圆点导航指示器的蒙版样式。 804 805**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 806 807**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 808 809**系统能力:** SystemCapability.ArkUI.ArkUI.Full 810 811**参数:** 812 813| 参数名 | 类型 | 必填 | 说明 | 814| ------ | ------- | ---- | ------------------------------------------------------------ | 815| value | boolean | 是 | 设置是否显示Swiper组件圆点导航指示器的蒙版样式。<br/>默认值:false | 816 817### color 818 819color(value: ResourceColor) 820 821Swiper组件圆点导航指示器的颜色。 822 823**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 824 825**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 826 827**系统能力:** SystemCapability.ArkUI.ArkUI.Full 828 829**参数:** 830 831| 参数名 | 类型 | 必填 | 说明 | 832| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ | 833| value | [ResourceColor](ts-types.md#resourcecolor) | 是 | 设置Swiper组件圆点导航指示器的颜色。<br/>默认值:'\#182431'(10%透明度) | 834 835### selectedColor 836 837selectedColor(value: ResourceColor) 838 839选中Swiper组件圆点导航指示器的颜色。 840 841**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 842 843**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 844 845**系统能力:** SystemCapability.ArkUI.ArkUI.Full 846 847**参数:** 848 849| 参数名 | 类型 | 必填 | 说明 | 850| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ | 851| value | [ResourceColor](ts-types.md#resourcecolor) | 是 | 设置选中Swiper组件圆点导航指示器的颜色。<br/>默认值:'\#007DFF' | 852 853### maxDisplayCount<sup>12+</sup> 854 855maxDisplayCount(maxDisplayCount: number) 856 857圆点导航点指示器样式下,导航点显示个数最大值。 858 859**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 860 861**系统能力:** SystemCapability.ArkUI.ArkUI.Full 862 863**参数:** 864 865| 参数名 | 类型 | 必填 | 说明 | 866| --------------- | ------ | ---- | ------------------------------------------------------------ | 867| maxDisplayCount | number | 是 | 设置圆点导航点指示器样式下,导航点显示个数最大值,当实际导航点个数大于最大导航点个数时,会生效超长效果样式,样式如示例5所示。<br/>默认值:这个属性没有默认值,如果设置异常值那等同于没有超长显示效果。<br/>取值范围:6-9<br/>**说明:** <br/>1、超长显示场景,目前暂时不支持交互功能(包括:手指点击拖拽、鼠标操作等)。<br/>2、在超长显示场景下,中间页面对应的选中导航点的位置,并不是完全固定的,取决于之前的翻页操作序列。 | 868 869### constructor 870 871constructor() 872 873DotIndicator的构造函数。 874 875**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 876 877**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 878 879**系统能力:** SystemCapability.ArkUI.ArkUI.Full 880 881>**说明:** 882> 883>按压导航点时,导航点会放大至1.33倍显示,因此非按压态时导航点的可见范围边界至实际范围边界存在一定距离,该距离会随着itemWidth、itemHeight、selectedItemWidth、selectedItemHeight等参数变大而变大。 884 885## DigitIndicator<sup>10+</sup> 886 887数字指示器属性及功能继承自[Indicator](#indicator10)。 888 889**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 890 891**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 892 893**系统能力:** SystemCapability.ArkUI.ArkUI.Full 894 895>**说明:** 896> 897>按组翻页时,数字导航点显示的子节点数量,不包括占位节点。 898 899### fontColor 900 901fontColor(value: ResourceColor) 902 903Swiper组件数字导航点的字体颜色。 904 905**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 906 907**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 908 909**系统能力:** SystemCapability.ArkUI.ArkUI.Full 910 911**参数:** 912 913| 参数名 | 类型 | 必填 | 说明 | 914| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ | 915| value | [ResourceColor](ts-types.md#resourcecolor) | 是 | 设置Swiper组件数字导航点的字体颜色。<br/>默认值:'\#ff182431' | 916 917### selectedFontColor 918 919selectedFontColor(value: ResourceColor) 920 921选中Swiper组件数字导航点的字体颜色。 922 923**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 924 925**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 926 927**系统能力:** SystemCapability.ArkUI.ArkUI.Full 928 929**参数:** 930 931| 参数名 | 类型 | 必填 | 说明 | 932| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ | 933| value | [ResourceColor](ts-types.md#resourcecolor) | 是 | 设置选中Swiper组件数字导航点的字体颜色。<br/>默认值:'\#ff182431' | 934 935### digitFont 936 937digitFont(value: Font) 938 939Swiper组件数字导航点的字体样式。 940 941**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 942 943**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 944 945**系统能力:** SystemCapability.ArkUI.ArkUI.Full 946 947**参数:** 948 949| 参数名 | 类型 | 必填 | 说明 | 950| ------ | ------------------------ | ---- | ------------------------------------------------------------ | 951| value | [Font](ts-types.md#font) | 是 | 设置Swiper组件数字导航点的字体样式。<br/>默认值:<br/>{ size: 14, weight: FontWeight.Normal } | 952 953### selectedDigitFont 954 955selectedDigitFont(value: Font) 956 957选中Swiper组件数字导航点的字体样式。 958 959**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 960 961**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 962 963**系统能力:** SystemCapability.ArkUI.ArkUI.Full 964 965**参数:** 966 967| 参数名 | 类型 | 必填 | 说明 | 968| ------ | ------------------------ | ---- | ------------------------------------------------------------ | 969| value | [Font](ts-types.md#font) | 是 | 设置选中Swiper组件数字导航点的字体样式。<br/>默认值:<br/>{ size: 14, weight: FontWeight.Normal } | 970 971>**说明:** 972> 973> 按组翻页时,数字导航点显示的子节点数量,不包括占位节点。 974 975### constructor 976 977constructor() 978 979DigitIndicator的构造函数。 980 981**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 982 983**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 984 985**系统能力:** SystemCapability.ArkUI.ArkUI.Full 986 987## ArrowStyle<sup>10+</sup>对象说明 988左右箭头属性。 989 990**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 991 992**系统能力:** SystemCapability.ArkUI.ArkUI.Full 993 994| 名称 | 类型 | 必填 | 说明 | 995| ---------------- | ---------------------------------------- | ---- | ---------------------------------------- | 996| showBackground | boolean | 否 | 设置箭头底板是否显示。<br/>默认值:false | 997| isSidebarMiddle | boolean | 否 | 设置箭头显示位置。<br/>默认值:false <br/>默认显示在导航点指示器两侧。 | 998| backgroundSize | [Length](ts-types.md#length) | 否 | 设置底板大小。<br/>在导航点两侧显示:<br/>默认值:24vp<br/>在组件两侧显示:<br/>默认值:32vp<br/>不支持设置百分比。 | 999| backgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置底板颜色。<br/>在导航点两侧显示:<br/>默认值:'\#00000000'<br/>在组件两侧显示:<br/>默认值:'\#19182431' | 1000| arrowSize | [Length](ts-types.md#length) | 否 | 设置箭头大小。<br/>在导航点两侧显示时:<br/>默认值:18vp<br/>在组件两侧显示时:<br/>默认值:24vp<br/>**说明:**<br/>showBackground为true时,arrowSize为backgroundSize的3/4。<br/>不支持设置百分比。 | 1001| arrowColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置箭头颜色。<br/>默认值:'\#182431' | 1002 1003## SwiperAutoFill<sup>10+</sup>对象说明 1004 1005自适应属性。 1006 1007**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 1008 1009**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1010 1011**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1012 1013| 名称 | 类型 | 必填 | 说明 | 1014| ------- | -------------------- | ------ | ------------------------------------ | 1015| minSize | [VP](ts-types.md#vp10) | 是 | 设置元素显示最小宽度。<br/>默认值:0 | 1016 1017## 事件 1018 1019除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件: 1020 1021### onChange 1022 1023onChange(event: (index: number) => void) 1024 1025当前显示的子组件索引变化时触发该事件,返回值为当前显示的子组件的索引值。 1026 1027Swiper组件结合LazyForEach使用时,不能在onChange事件里触发子页面UI的刷新。 1028 1029**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 1030 1031**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1032 1033**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1034 1035**参数:** 1036 1037| 参数名 | 类型 | 必填 | 说明 | 1038| ------ | ------ | ---- | -------------------- | 1039| index | number | 是 | 当前显示元素的索引。 | 1040 1041### onAnimationStart<sup>9+</sup> 1042 1043onAnimationStart(event: (index: number, targetIndex: number, extraInfo: SwiperAnimationEvent) => void) 1044 1045切换动画开始时触发该回调。参数为动画开始前的index值(不是最终结束动画的index值),多列Swiper时,index为最左侧组件的索引。 1046 1047**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 1048 1049**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1050 1051**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1052 1053**参数:** 1054 1055| 参数名 | 类型 | 必填 | 说明 | 1056| ------------------------- | ---------------------------------------------------------- | ---- | ------------------------------------------------------------ | 1057| index | number | 是 | 当前显示元素的索引。 | 1058| targetIndex<sup>10+</sup> | number | 是 | 切换动画目标元素的索引。 | 1059| extraInfo<sup>10+</sup> | [SwiperAnimationEvent](#swiperanimationevent10对象说明) | 是 | 动画相关信息,包括主轴方向上当前显示元素和目标元素相对Swiper起始位置的位移,以及离手速度。 | 1060 1061>**说明:** 1062> 1063>- 当翻页动画时长为0时,只有以下场景会触发该回调:滑动翻页、自动轮播、调用SwiperController.showNext()和SwiperController.showPrevious()接口以及手指点击导航点翻页。 1064 1065### onAnimationEnd<sup>9+</sup> 1066 1067onAnimationEnd(event: (index: number, extraInfo: SwiperAnimationEvent) => void) 1068 1069切换动画结束时触发该回调。 1070 1071当Swiper切换动效结束时触发,包括动画过程中手势中断,通过SwiperController调用finishAnimation。参数为动画结束后的index值,多列Swiper时,index为最左侧组件的索引。 1072 1073**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 1074 1075**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1076 1077**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1078 1079**参数:** 1080 1081| 参数名 | 类型 | 必填 | 说明 | 1082| ----------------------- | ---------------------------------------------------------- | ---- | ------------------------------------------------------------ | 1083| index | number | 是 | 当前显示元素的索引。 | 1084| extraInfo<sup>10+</sup> | [SwiperAnimationEvent](#swiperanimationevent10对象说明) | 是 | 动画相关信息,只返回主轴方向上当前显示元素相对于Swiper起始位置的位移。 | 1085 1086>**说明:** 1087> 1088>- 当翻页动画时长为0时,只有以下场景会触发该回调:滑动翻页、自动轮播、调用SwiperController.showNext()和SwiperController.showPrevious()接口以及手指点击导航点翻页。 1089 1090### onGestureSwipe<sup>10+</sup> 1091 1092onGestureSwipe(event: (index: number, extraInfo: SwiperAnimationEvent) => void) 1093 1094在页面跟手滑动过程中,逐帧触发该回调。多列Swiper时,index为最左侧组件的索引。 1095 1096**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1097 1098**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1099 1100**参数:** 1101 1102| 参数名 | 类型 | 必填 | 说明 | 1103| --------- | ---------------------------------------------------------- | ---- | ------------------------------------------------------------ | 1104| index | number | 是 | 当前显示元素的索引。 | 1105| extraInfo | [SwiperAnimationEvent](#swiperanimationevent10对象说明) | 是 | 动画相关信息,只返回主轴方向上当前显示元素相对于Swiper起始位置的位移。 | 1106 1107### customContentTransition<sup>12+</sup> 1108 1109customContentTransition(transition: SwiperContentAnimatedTransition) 1110 1111自定义Swiper页面切换动画。在页面跟手滑动和离手后执行切换动画的过程中,会对视窗内所有页面逐帧触发回调,开发者可以在回调中设置透明度、缩放比例、位移等属性来自定义切换动画。 1112 1113使用说明: 1114 11151、循环场景下,设置prevMargin和nextMargin属性,使得Swiper前后端显示同一页面时,该接口不生效。<br>2、在页面跟手滑动和离手后执行切换动画的过程中,会对视窗内所有页面逐帧触发[SwiperContentTransitionProxy](#swipercontenttransitionproxy12对象说明)回调。例如,当视窗内有下标为0、1的两个页面时,会每帧触发两次index值分别为0和1的回调。<br>3、设置displayCount属性的swipeByGroup参数为true时,若同组中至少有一个页面在视窗内时,则会对同组中所有页面触发回调,若同组所有页面均不在视窗内时,则会一起下渲染树。<br>4、在页面跟手滑动和离手后执行切换动画的过程中,默认动画(页面滑动)依然会发生,若希望页面不滑动,可以设置主轴方向上负的位移(translate属性)来抵消页面滑动。例如:当displayCount属性值为2,视窗内有下标为0、1的两个页面时,页面水平滑动过程中,可以逐帧设置第0页的translate属性在x轴上的值为-position * mainAxisLength来抵消第0页的位移,设置第1页的translate属性在x轴上的值为-(position - 1) * mainAxisLength来抵消第1页的位移。 1116 1117**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1118 1119**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1120 1121**参数:** 1122 1123| 参数名 | 类型 | 必填 | 说明 | 1124| ------ | ---- | ---- | ---- | 1125| transition | [SwiperContentAnimatedTransition](#swipercontentanimatedtransition12对象说明) | 是 | Swiper自定义切换动画相关信息。 | 1126 1127### onContentDidScroll<sup>12+</sup> 1128 1129onContentDidScroll(handler: ContentDidScrollCallback) 1130 1131监听Swiper页面滑动事件。 1132 1133使用说明: 1134 11351、循环场景下,设置prevMargin和nextMargin属性,使得Swiper前后端显示同一页面时,该接口不生效。<br>2、在页面滑动过程中,会对视窗内所有页面逐帧触发[ContentDidScrollCallback](#contentdidscrollcallback12)回调。例如,当视窗内有下标为0、1的两个页面时,会每帧触发两次index值分别为0和1的回调。<br>3、设置displayCount属性的swipeByGroup参数为true时,若同组中至少有一个页面在视窗内时,则会对同组中所有页面触发回调。 1136 1137**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1138 1139**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1140 1141**参数:** 1142 1143| 参数名 | 类型 | 必填 | 说明 | 1144| ------ | ---- | ---- | ---- | 1145| handler | [ContentDidScrollCallback](#contentdidscrollcallback12) | 是 | Swiper滑动时触发的回调。 | 1146 1147## SwiperAnimationEvent<sup>10+</sup>对象说明 1148 1149Swiper组件动画相关信息集合。 1150 1151**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1152 1153**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1154 1155| 名称 | 类型 | 只读 | 可选 | 说明 | 1156| ------------- | ----------- | ---- | ---- |------------------------------- | 1157| currentOffset | number | 否 | 否 | Swiper当前显示元素在主轴方向上,相对于Swiper起始位置的位移。单位VP,默认值为0。| 1158| targetOffset | number | 否 | 否 | Swiper动画目标元素在主轴方向上,相对于Swiper起始位置的位移。单位VP,默认值为0。| 1159| velocity | number | 否 | 否 | Swiper离手动画开始时的离手速度。单位VP/S,默认值为0。| 1160 1161## SwiperContentAnimatedTransition<sup>12+</sup>对象说明 1162 1163Swiper自定义切换动画相关信息。 1164 1165**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1166 1167**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1168 1169| 名称 | 类型 | 必填 | 说明 | 1170| ------ | ---- | ---- | ---- | 1171| timeout | number | 否 | Swiper自定义切换动画超时时间。从页面执行默认动画(页面滑动)至移出视窗外的第一帧开始计时,如果到达该时间后,开发者仍未调用[SwiperContentTransitionProxy](#swipercontenttransitionproxy12对象说明)的finishTransition接口通知Swiper组件此页面的自定义动画已结束,那么组件就会认为此页面的自定义动画已结束,立即将该页面节点下渲染树。单位ms,默认值为0。 | 1172| transition | Callback<[SwiperContentTransitionProxy](#swipercontenttransitionproxy12对象说明)> | 是 | 自定义切换动画具体内容。 | 1173 1174## SwiperContentTransitionProxy<sup>12+</sup>对象说明 1175 1176Swiper自定义切换动画执行过程中,返回给开发者的proxy对象。开发者可通过该对象获取自定义动画视窗内的页面信息,同时,也可以通过调用该对象的finishTransition接口通知Swiper组件页面自定义动画已结束。 1177 1178**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1179 1180**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1181 1182### 属性 1183 1184| 名称 | 类型 | 只读 | 可选 | 说明 | 1185| ---- | ---- | --- | ---- | --- | 1186| selectedIndex | number | 否 | 否 | 当前选中页面的索引。 | 1187| index | number | 否 | 否 | 视窗内页面的索引。 | 1188| position | number | 否 | 否 | index页面相对于Swiper主轴起始位置(selectedIndex对应页面的起始位置)的移动比例。 | 1189| mainAxisLength | number | 否 | 否 | index对应页面在主轴方向上的长度。 | 1190 1191>**说明:** 1192> 1193>- 例如,当前选中的子组件的索引为0,从第0页切换到第1页的动画过程中,每帧都会对视窗内所有页面触发回调,当视窗内有第0页和第1页两页时,每帧会触发两次回调。其中,第一次回调的selectedIndex为0、index为0、position为当前帧第0页相对于动画开始前第0页的移动比例,mainAxisLength为主轴方向上第0页的长度。第二次回调的selectedIndex仍为0、index为1、position为当前帧第1页相对于动画开始前第0页的移动比例,mainAxisLength为主轴方向上第1页的长度。 1194> 1195>- 若动画曲线为弹簧插值曲线,从第0页切换到第1页的动画过程中,可能会因为离手时的位置和速度,先过滑到第2页,再回弹到第1页,该过程中每帧会对视窗内第1页和第2页触发回调。 1196 1197 1198### finishTransition<sup>12+</sup> 1199 1200finishTransition(): void 1201 1202通知Swiper组件,此页面的自定义动画已结束。 1203 1204**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1205 1206**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1207 1208## ContentDidScrollCallback<sup>12+</sup> 1209 1210type ContentDidScrollCallback = (selectedIndex: number, index: number, position: number, mainAxisLength: number) => void 1211 1212Swiper滑动时触发的回调,参数可参考[SwiperContentTransitionProxy](#swipercontenttransitionproxy12对象说明)中的说明。 1213 1214**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1215 1216**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1217 1218| 参数名 | 类型 | 必填 | 说明 | 1219| ------ | ---- | ---- | ---- | 1220| selectedIndex | number | 是 | 当前选中页面的索引。 | 1221| index | number | 是 | 视窗内页面的索引。 | 1222| position | number | 是 | index页面相对于Swiper主轴起始位置(selectedIndex对应页面的起始位置)的移动比例。 | 1223| mainAxisLength | number | 是 | index对应页面在主轴方向上的长度。 | 1224 1225## 示例 1226 1227### 示例1 1228该示例实现了通过indicatorInteractive控制导航点交互功能。 1229```ts 1230// xxx.ets 1231class MyDataSource implements IDataSource { 1232 private list: number[] = [] 1233 1234 constructor(list: number[]) { 1235 this.list = list 1236 } 1237 1238 totalCount(): number { 1239 return this.list.length 1240 } 1241 1242 getData(index: number): number { 1243 return this.list[index] 1244 } 1245 1246 registerDataChangeListener(listener: DataChangeListener): void { 1247 } 1248 1249 unregisterDataChangeListener() { 1250 } 1251} 1252 1253@Entry 1254@Component 1255struct SwiperExample { 1256 private swiperController: SwiperController = new SwiperController() 1257 private data: MyDataSource = new MyDataSource([]) 1258 1259 aboutToAppear(): void { 1260 let list: number[] = [] 1261 for (let i = 1; i <= 10; i++) { 1262 list.push(i); 1263 } 1264 this.data = new MyDataSource(list) 1265 } 1266 1267 build() { 1268 Column({ space: 5 }) { 1269 Swiper(this.swiperController) { 1270 LazyForEach(this.data, (item: string) => { 1271 Text(item.toString()) 1272 .width('90%') 1273 .height(160) 1274 .backgroundColor(0xAFEEEE) 1275 .textAlign(TextAlign.Center) 1276 .fontSize(30) 1277 }, (item: string) => item) 1278 } 1279 .cachedCount(2) 1280 .index(1) 1281 .autoPlay(true) 1282 .interval(4000) 1283 .loop(true) 1284 .indicatorInteractive(true) 1285 .duration(1000) 1286 .itemSpace(0) 1287 .indicator( // 设置圆点导航点样式 1288 new DotIndicator() 1289 .itemWidth(15) 1290 .itemHeight(15) 1291 .selectedItemWidth(15) 1292 .selectedItemHeight(15) 1293 .color(Color.Gray) 1294 .selectedColor(Color.Blue)) 1295 .displayArrow({ // 设置导航点箭头样式 1296 showBackground: true, 1297 isSidebarMiddle: true, 1298 backgroundSize: 24, 1299 backgroundColor: Color.White, 1300 arrowSize: 18, 1301 arrowColor: Color.Blue 1302 }, false) 1303 .curve(Curve.Linear) 1304 .onChange((index: number) => { 1305 console.info(index.toString()) 1306 }) 1307 .onGestureSwipe((index: number, extraInfo: SwiperAnimationEvent) => { 1308 console.info("index: " + index) 1309 console.info("current offset: " + extraInfo.currentOffset) 1310 }) 1311 .onAnimationStart((index: number, targetIndex: number, extraInfo: SwiperAnimationEvent) => { 1312 console.info("index: " + index) 1313 console.info("targetIndex: " + targetIndex) 1314 console.info("current offset: " + extraInfo.currentOffset) 1315 console.info("target offset: " + extraInfo.targetOffset) 1316 console.info("velocity: " + extraInfo.velocity) 1317 }) 1318 .onAnimationEnd((index: number, extraInfo: SwiperAnimationEvent) => { 1319 console.info("index: " + index) 1320 console.info("current offset: " + extraInfo.currentOffset) 1321 }) 1322 1323 Row({ space: 12 }) { 1324 Button('showNext') 1325 .onClick(() => { 1326 this.swiperController.showNext() 1327 }) 1328 Button('showPrevious') 1329 .onClick(() => { 1330 this.swiperController.showPrevious() 1331 }) 1332 }.margin(5) 1333 }.width('100%') 1334 .margin({ top: 5 }) 1335 } 1336} 1337``` 1338 1339 1340 1341### 示例2 1342该示例演示了使用数字指示器的效果和功能。 1343```ts 1344// xxx.ets 1345class MyDataSource implements IDataSource { 1346 private list: number[] = [] 1347 1348 constructor(list: number[]) { 1349 this.list = list 1350 } 1351 1352 totalCount(): number { 1353 return this.list.length 1354 } 1355 1356 getData(index: number): number { 1357 return this.list[index] 1358 } 1359 1360 registerDataChangeListener(listener: DataChangeListener): void { 1361 } 1362 1363 unregisterDataChangeListener() { 1364 } 1365} 1366 1367@Entry 1368@Component 1369struct SwiperExample { 1370 private swiperController: SwiperController = new SwiperController() 1371 private data: MyDataSource = new MyDataSource([]) 1372 1373 aboutToAppear(): void { 1374 let list: number[] = [] 1375 for (let i = 1; i <= 10; i++) { 1376 list.push(i); 1377 } 1378 this.data = new MyDataSource(list) 1379 } 1380 1381 build() { 1382 Column({ space: 5 }) { 1383 Swiper(this.swiperController) { 1384 LazyForEach(this.data, (item: string) => { 1385 Text(item.toString()) 1386 .width('90%') 1387 .height(160) 1388 .backgroundColor(0xAFEEEE) 1389 .textAlign(TextAlign.Center) 1390 .fontSize(30) 1391 }, (item: string) => item) 1392 } 1393 .cachedCount(2) 1394 .index(1) 1395 .autoPlay(true) 1396 .interval(4000) 1397 .indicator(Indicator.digit() // 设置数字导航点样式 1398 .top(200) 1399 .fontColor(Color.Gray) 1400 .selectedFontColor(Color.Gray) 1401 .digitFont({ size: 20, weight: FontWeight.Bold }) 1402 .selectedDigitFont({ size: 20, weight: FontWeight.Normal })) 1403 .loop(true) 1404 .duration(1000) 1405 .itemSpace(0) 1406 .displayArrow(true, false) 1407 1408 Row({ space: 12 }) { 1409 Button('showNext') 1410 .onClick(() => { 1411 this.swiperController.showNext() 1412 }) 1413 Button('showPrevious') 1414 .onClick(() => { 1415 this.swiperController.showPrevious() 1416 }) 1417 }.margin(5) 1418 }.width('100%') 1419 .margin({ top: 5 }) 1420 } 1421} 1422``` 1423 1424 1425### 示例3 1426该示例通过dislayCount属性实现了按组翻页的效果。 1427```ts 1428// xxx.ets 1429class MyDataSource implements IDataSource { 1430 private list: number[] = [] 1431 1432 constructor(list: number[]) { 1433 this.list = list 1434 } 1435 1436 totalCount(): number { 1437 return this.list.length 1438 } 1439 1440 getData(index: number): number { 1441 return this.list[index] 1442 } 1443 1444 registerDataChangeListener(listener: DataChangeListener): void { 1445 } 1446 1447 unregisterDataChangeListener() { 1448 } 1449} 1450 1451@Entry 1452@Component 1453struct SwiperExample { 1454 private swiperController: SwiperController = new SwiperController() 1455 private data: MyDataSource = new MyDataSource([]) 1456 1457 aboutToAppear(): void { 1458 let list: number[] = [] 1459 for (let i = 1; i <= 10; i++) { 1460 list.push(i); 1461 } 1462 this.data = new MyDataSource(list) 1463 } 1464 1465 build() { 1466 Column({ space: 5 }) { 1467 Swiper(this.swiperController) { 1468 LazyForEach(this.data, (item: string) => { 1469 Text(item.toString()) 1470 .width('90%') 1471 .height(160) 1472 .backgroundColor(0xAFEEEE) 1473 .textAlign(TextAlign.Center) 1474 .fontSize(30) 1475 }, (item: string) => item) 1476 } 1477 .displayCount(3, true) 1478 .autoPlay(true) 1479 .interval(4000) 1480 .loop(true) 1481 .duration(1000) 1482 .itemSpace(10) 1483 .indicator( // 设置圆点导航点样式 1484 new DotIndicator() 1485 .itemWidth(15) 1486 .itemHeight(15) 1487 .selectedItemWidth(15) 1488 .selectedItemHeight(15) 1489 .color(Color.Gray) 1490 .selectedColor(Color.Blue)) 1491 1492 Row({ space: 12 }) { 1493 Button('showNext') 1494 .onClick(() => { 1495 this.swiperController.showNext() 1496 }) 1497 Button('showPrevious') 1498 .onClick(() => { 1499 this.swiperController.showPrevious() 1500 }) 1501 }.margin(5) 1502 }.width('100%') 1503 .margin({ top: 5 }) 1504 } 1505} 1506``` 1507 1508 1509### 示例4 1510 1511本示例通过customContentTransition接口实现了自定义Swiper页面切换动画。 1512 1513```ts 1514// xxx.ets 1515@Entry 1516@Component 1517struct SwiperCustomAnimationExample { 1518 private DISPLAY_COUNT: number = 2 1519 private MIN_SCALE: number = 0.75 1520 1521 @State backgroundColors: Color[] = [Color.Green, Color.Blue, Color.Yellow, Color.Pink, Color.Gray, Color.Orange] 1522 @State opacityList: number[] = [] 1523 @State scaleList: number[] = [] 1524 @State translateList: number[] = [] 1525 @State zIndexList: number[] = [] 1526 1527 aboutToAppear(): void { 1528 for (let i = 0; i < this.backgroundColors.length; i++) { 1529 this.opacityList.push(1.0) 1530 this.scaleList.push(1.0) 1531 this.translateList.push(0.0) 1532 this.zIndexList.push(0) 1533 } 1534 } 1535 1536 build() { 1537 Column() { 1538 Swiper() { 1539 ForEach(this.backgroundColors, (backgroundColor: Color, index: number) => { 1540 Text(index.toString()).width('100%').height('100%').fontSize(50).textAlign(TextAlign.Center) 1541 .backgroundColor(backgroundColor) 1542 // 自定义动画变化透明度、缩放页面、抵消系统默认位移、渲染层级等 1543 .opacity(this.opacityList[index]) 1544 .scale({ x: this.scaleList[index], y: this.scaleList[index] }) 1545 .translate({ x: this.translateList[index] }) 1546 .zIndex(this.zIndexList[index]) 1547 }) 1548 } 1549 .height(300) 1550 .indicator(false) 1551 .displayCount(this.DISPLAY_COUNT, true) 1552 .customContentTransition({ 1553 // 页面移除视窗时超时1000ms下渲染树 1554 timeout: 1000, 1555 // 对视窗内所有页面逐帧回调transition,在回调中修改opacity、scale、translate、zIndex等属性值,实现自定义动画 1556 transition: (proxy: SwiperContentTransitionProxy) => { 1557 if (proxy.position <= proxy.index % this.DISPLAY_COUNT || proxy.position >= this.DISPLAY_COUNT + proxy.index % this.DISPLAY_COUNT) { 1558 // 同组页面往左滑或往右完全滑出视窗外时,重置属性值 1559 this.opacityList[proxy.index] = 1.0 1560 this.scaleList[proxy.index] = 1.0 1561 this.translateList[proxy.index] = 0.0 1562 this.zIndexList[proxy.index] = 0 1563 } else { 1564 // 同组页面往右滑且未滑出视窗外时,对同组中左右两个页面,逐帧根据position修改属性值,实现两个页面往Swiper中间靠拢并透明缩放的自定义切换动画 1565 if (proxy.index % this.DISPLAY_COUNT === 0) { 1566 this.opacityList[proxy.index] = 1 - proxy.position / this.DISPLAY_COUNT 1567 this.scaleList[proxy.index] = this.MIN_SCALE + (1 - this.MIN_SCALE) * (1 - proxy.position / this.DISPLAY_COUNT) 1568 this.translateList[proxy.index] = - proxy.position * proxy.mainAxisLength + (1 - this.scaleList[proxy.index]) * proxy.mainAxisLength / 2.0 1569 } else { 1570 this.opacityList[proxy.index] = 1 - (proxy.position - 1) / this.DISPLAY_COUNT 1571 this.scaleList[proxy.index] = this.MIN_SCALE + (1 - this.MIN_SCALE) * (1 - (proxy.position - 1) / this.DISPLAY_COUNT) 1572 this.translateList[proxy.index] = - (proxy.position - 1) * proxy.mainAxisLength - (1 - this.scaleList[proxy.index]) * proxy.mainAxisLength / 2.0 1573 } 1574 this.zIndexList[proxy.index] = -1 1575 } 1576 } 1577 }) 1578 .onContentDidScroll((selectedIndex: number, index: number, position: number, mainAxisLength: number) => { 1579 // 监听Swiper页面滑动事件,在该回调中可以实现自定义导航点切换动画等 1580 console.info("onContentDidScroll selectedIndex: " + selectedIndex + ", index: " + index + ", position: " + position + ", mainAxisLength: " + mainAxisLength) 1581 }) 1582 }.width('100%') 1583 } 1584} 1585``` 1586 1587 1588### 示例5 1589 1590本示例通过DotIndicator接口的maxDisplayCount属性实现了圆点导航点超长显示动画效果。 1591 1592```ts 1593class MyDataSource implements IDataSource { 1594 private list: number[] = [] 1595 1596 constructor(list: number[]) { 1597 this.list = list 1598 } 1599 1600 totalCount(): number { 1601 return this.list.length 1602 } 1603 1604 getData(index: number): number { 1605 return this.list[index] 1606 } 1607 1608 registerDataChangeListener(listener: DataChangeListener): void { 1609 } 1610 1611 unregisterDataChangeListener() { 1612 } 1613} 1614 1615@Entry 1616@Component 1617struct Index { 1618 private swiperController: SwiperController = new SwiperController() 1619 private data: MyDataSource = new MyDataSource([]) 1620 1621 aboutToAppear(): void { 1622 let list: number[] = [] 1623 for (let i = 1; i <= 15; i++) { 1624 list.push(i); 1625 } 1626 this.data = new MyDataSource(list) 1627 } 1628 1629 build() { 1630 Column({ space: 5 }) { 1631 Swiper(this.swiperController) { 1632 LazyForEach(this.data, (item: string) => { 1633 Text(item.toString()) 1634 .width('90%') 1635 .height(160) 1636 .backgroundColor(0xAFEEEE) 1637 .textAlign(TextAlign.Center) 1638 .fontSize(30) 1639 }, (item: string) => item) 1640 } 1641 .cachedCount(2) 1642 .index(5) 1643 .autoPlay(true) 1644 .interval(4000) 1645 .loop(true) 1646 .duration(1000) 1647 .itemSpace(0) 1648 .indicator( // 设置圆点导航点样式 1649 new DotIndicator() 1650 .itemWidth(8) 1651 .itemHeight(8) 1652 .selectedItemWidth(16) 1653 .selectedItemHeight(8) 1654 .color(Color.Gray) 1655 .selectedColor(Color.Blue) 1656 .maxDisplayCount(9)) 1657 .displayArrow({ // 设置导航点箭头样式 1658 showBackground: true, 1659 isSidebarMiddle: true, 1660 backgroundSize: 24, 1661 backgroundColor: Color.White, 1662 arrowSize: 18, 1663 arrowColor: Color.Blue 1664 }, false) 1665 .curve(Curve.Linear) 1666 Row({ space: 12 }) { 1667 Button('showNext') 1668 .onClick(() => { 1669 this.swiperController.showNext() 1670 }) 1671 Button('showPrevious') 1672 .onClick(() => { 1673 this.swiperController.showPrevious() 1674 }) 1675 }.margin(5) 1676 }.width('100%') 1677 .margin({ top: 5 }) 1678 } 1679} 1680``` 1681 1682 1683