写点什么

鸿蒙 HarmonyOS 实战 -ArkUI 组件(Swiper)

作者:蜀道山
  • 2024-04-19
    湖南
  • 本文字数:3456 字

    阅读完需:约 11 分钟

鸿蒙HarmonyOS实战-ArkUI组件(Swiper)

🚀一、Swiper

🔎1.概述

Swiper 可以实现手机、平板等移动端设备上的图片轮播效果,支持无缝轮播、自动播放、响应式布局等功能。Swiper 轮播图具有使用简单、样式可定制、功能丰富、兼容性好等优点,是很多网站和移动应用中常用的轮播图插件。

🔎2.布局与约束

Swiper 是一个容器组件,如果自身尺寸没有被设置,它会根据子组件大小自动调整自身尺寸。如果开发者给 Swiper 设置了固定尺寸,那么在轮播过程中,Swiper 的尺寸将一直保持设置的固定尺寸。如果未设置固定尺寸,Swiper 会根据子组件大小自动调整自身尺寸。

🔎3.循环播放

@Entry@Componentstruct Index {  private swiperController: SwiperController = new SwiperController()  build() {    Swiper(this.swiperController) {      Text("0")        .width('100%')        .height('100%')        .backgroundColor(Color.Gray)        .textAlign(TextAlign.Center)        .fontSize(30)
Text("1") .width('100%') .height('100%') .backgroundColor(Color.Green) .textAlign(TextAlign.Center) .fontSize(30)
Text("2") .width('100%') .height('100%') .backgroundColor(Color.Blue) .textAlign(TextAlign.Center) .fontSize(30) } .loop(true) }}
复制代码



当 loop 为 true 时,在显示第一页或最后一页时,可以继续往前切换到前一页或者往后切换到后一页。如果 loop 为 false,则在第一页或最后一页时,无法继续向前或者向后切换页面。

更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY

🔎4.自动轮播

@Entry@Componentstruct Index {  private swiperController: SwiperController = new SwiperController()  build() {    Swiper(this.swiperController) {      Text("0")        .width('100%')        .height('100%')        .backgroundColor(Color.Gray)        .textAlign(TextAlign.Center)        .fontSize(30)
Text("1") .width('100%') .height('100%') .backgroundColor(Color.Green) .textAlign(TextAlign.Center) .fontSize(30)
Text("2") .width('100%') .height('100%') .backgroundColor(Color.Pink) .textAlign(TextAlign.Center) .fontSize(30) } .loop(true) .autoPlay(true) .interval(2000) }}
复制代码



autoPlay 为 true 时,会自动切换播放子组件,子组件与子组件之间的播放间隔通过 interval 属性设置。interval 属性默认值为 2000,单位毫秒。

🔎5.导航点样式

@Entry@Componentstruct Index {  private swiperController: SwiperController = new SwiperController()  build() {    Swiper(this.swiperController) {      Text("0")        .width('100%')        .height('100%')        .backgroundColor(Color.Gray)        .textAlign(TextAlign.Center)        .fontSize(30)
Text("1") .width('100%') .height('100%') .backgroundColor(Color.Green) .textAlign(TextAlign.Center) .fontSize(30)
Text("2") .width('100%') .height('100%') .backgroundColor(Color.Pink) .textAlign(TextAlign.Center) .fontSize(30) } .indicatorStyle({ size: 30, left: 0, color: Color.Red }) }}
复制代码



通过 indicatorStyle 属性,开发者可以设置导航点相对于 Swiper 组件上下左右四个方位的位置,同时也可以设置每个导航点的尺寸、颜色、蒙层和被选中导航点的颜色。

🔎6.页面切换方式

Swiper 支持三种页面切换方式:手指滑动、点击导航点和通过控制器


@Entry@Componentstruct Index {  private swiperController: SwiperController = new SwiperController();
build() { Column({ space: 5 }) { Swiper(this.swiperController) { Text("0") .width(250) .height(250) .backgroundColor(Color.Gray) .textAlign(TextAlign.Center) .fontSize(30) Text("1") .width(250) .height(250) .backgroundColor(Color.Green) .textAlign(TextAlign.Center) .fontSize(30) Text("2") .width(250) .height(250) .backgroundColor(Color.Pink) .textAlign(TextAlign.Center) .fontSize(30) } .indicator(true)
Row({ space: 12 }) { Button('下一页') .onClick(() => { this.swiperController.showNext(); // 通过controller切换到后一页 }) Button('上一页') .onClick(() => { this.swiperController.showPrevious(); // 通过controller切换到前一页 }) }.margin(5) }.width('100%') .margin({ top: 5 }) }}
复制代码


🔎7.轮播方向

vertical 为 true 时,表示在垂直方向上进行轮播;为 false 时,表示在水平方向上进行轮播。vertical 默认值为 false

更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY


@Entry@Componentstruct Index {  private swiperController: SwiperController = new SwiperController();
build() { Column({ space: 5 }) { Swiper(this.swiperController) { Text("0") .width(250) .height(250) .backgroundColor(Color.Gray) .textAlign(TextAlign.Center) .fontSize(30) Text("1") .width(250) .height(250) .backgroundColor(Color.Green) .textAlign(TextAlign.Center) .fontSize(30) Text("2") .width(250) .height(250) .backgroundColor(Color.Pink) .textAlign(TextAlign.Center) .fontSize(30) } .indicator(true).vertical(false)
Swiper(this.swiperController) { Text("0") .width(250) .height(250) .backgroundColor(Color.Gray) .textAlign(TextAlign.Center) .fontSize(30) Text("1") .width(250) .height(250) .backgroundColor(Color.Green) .textAlign(TextAlign.Center) .fontSize(30) Text("2") .width(250) .height(250) .backgroundColor(Color.Pink) .textAlign(TextAlign.Center) .fontSize(30) } .indicator(true).vertical(true) } }}
复制代码


🔎8.每页显示多个子页面

Swiper 支持在一个页面内同时显示多个子组件,通过 displayCount 属性设置


@Entry@Componentstruct Index {  private swiperController: SwiperController = new SwiperController();
build() { Swiper(this.swiperController) { Text("0") .width(250) .height(250) .backgroundColor(Color.Gray) .textAlign(TextAlign.Center) .fontSize(30) Text("1") .width(250) .height(250) .backgroundColor(Color.Green) .textAlign(TextAlign.Center) .fontSize(30) Text("2") .width(250) .height(250) .backgroundColor(Color.Pink) .textAlign(TextAlign.Center) .fontSize(30) Text("3") .width(250) .height(250) .backgroundColor(Color.Blue) .textAlign(TextAlign.Center) .fontSize(30) } .indicator(true) .displayCount(2) }}
复制代码


🚀写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

  • 关注小编,同时可以期待后续文章 ing🚀,不定期分享原创知识。

  • 更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY



用户头像

蜀道山

关注

欢迎关注作者公众号:【 蜀道衫】 2023-12-29 加入

3年Java后端,5年Android应用开发,精通Java高并发、JVM调优、以及Android开发各种技能。现专研学习鸿蒙HarmonyOS Next操作系统

评论

发布
暂无评论
鸿蒙HarmonyOS实战-ArkUI组件(Swiper)_鸿蒙_蜀道山_InfoQ写作社区