当前位置:   article > 正文

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

鸿蒙 swiper

 一、Swiper

1.概述

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

2.布局与约束

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

3.循环播放

  1. @Entry
  2. @Component
  3. struct Index {
  4. private swiperController: SwiperController = new SwiperController()
  5. build() {
  6. Swiper(this.swiperController) {
  7. Text("0")
  8. .width('100%')
  9. .height('100%')
  10. .backgroundColor(Color.Gray)
  11. .textAlign(TextAlign.Center)
  12. .fontSize(30)
  13. Text("1")
  14. .width('100%')
  15. .height('100%')
  16. .backgroundColor(Color.Green)
  17. .textAlign(TextAlign.Center)
  18. .fontSize(30)
  19. Text("2")
  20. .width('100%')
  21. .height('100%')
  22. .backgroundColor(Color.Blue)
  23. .textAlign(TextAlign.Center)
  24. .fontSize(30)
  25. }
  26. .loop(true)
  27. }
  28. }

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

4.自动轮播

  1. @Entry
  2. @Component
  3. struct Index {
  4. private swiperController: SwiperController = new SwiperController()
  5. build() {
  6. Swiper(this.swiperController) {
  7. Text("0")
  8. .width('100%')
  9. .height('100%')
  10. .backgroundColor(Color.Gray)
  11. .textAlign(TextAlign.Center)
  12. .fontSize(30)
  13. Text("1")
  14. .width('100%')
  15. .height('100%')
  16. .backgroundColor(Color.Green)
  17. .textAlign(TextAlign.Center)
  18. .fontSize(30)
  19. Text("2")
  20. .width('100%')
  21. .height('100%')
  22. .backgroundColor(Color.Pink)
  23. .textAlign(TextAlign.Center)
  24. .fontSize(30)
  25. }
  26. .loop(true)
  27. .autoPlay(true)
  28. .interval(2000)
  29. }
  30. }

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

5.导航点样式

  1. @Entry
  2. @Component
  3. struct Index {
  4. private swiperController: SwiperController = new SwiperController()
  5. build() {
  6. Swiper(this.swiperController) {
  7. Text("0")
  8. .width('100%')
  9. .height('100%')
  10. .backgroundColor(Color.Gray)
  11. .textAlign(TextAlign.Center)
  12. .fontSize(30)
  13. Text("1")
  14. .width('100%')
  15. .height('100%')
  16. .backgroundColor(Color.Green)
  17. .textAlign(TextAlign.Center)
  18. .fontSize(30)
  19. Text("2")
  20. .width('100%')
  21. .height('100%')
  22. .backgroundColor(Color.Pink)
  23. .textAlign(TextAlign.Center)
  24. .fontSize(30)
  25. }
  26. .indicatorStyle({
  27. size: 30,
  28. left: 0,
  29. color: Color.Red
  30. })
  31. }
  32. }

在这里插入图片描述

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

6.页面切换方式

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

  1. @Entry
  2. @Component
  3. struct Index {
  4. private swiperController: SwiperController = new SwiperController();
  5. build() {
  6. Column({ space: 5 }) {
  7. Swiper(this.swiperController) {
  8. Text("0")
  9. .width(250)
  10. .height(250)
  11. .backgroundColor(Color.Gray)
  12. .textAlign(TextAlign.Center)
  13. .fontSize(30)
  14. Text("1")
  15. .width(250)
  16. .height(250)
  17. .backgroundColor(Color.Green)
  18. .textAlign(TextAlign.Center)
  19. .fontSize(30)
  20. Text("2")
  21. .width(250)
  22. .height(250)
  23. .backgroundColor(Color.Pink)
  24. .textAlign(TextAlign.Center)
  25. .fontSize(30)
  26. }
  27. .indicator(true)
  28. Row({ space: 12 }) {
  29. Button('下一页')
  30. .onClick(() => {
  31. this.swiperController.showNext(); // 通过controller切换到后一页
  32. })
  33. Button('上一页')
  34. .onClick(() => {
  35. this.swiperController.showPrevious(); // 通过controller切换到前一页
  36. })
  37. }.margin(5)
  38. }.width('100%')
  39. .margin({ top: 5 })
  40. }
  41. }

在这里插入图片描述

7.轮播方向

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

  1. @Entry
  2. @Component
  3. struct Index {
  4. private swiperController: SwiperController = new SwiperController();
  5. build() {
  6. Column({ space: 5 }) {
  7. Swiper(this.swiperController) {
  8. Text("0")
  9. .width(250)
  10. .height(250)
  11. .backgroundColor(Color.Gray)
  12. .textAlign(TextAlign.Center)
  13. .fontSize(30)
  14. Text("1")
  15. .width(250)
  16. .height(250)
  17. .backgroundColor(Color.Green)
  18. .textAlign(TextAlign.Center)
  19. .fontSize(30)
  20. Text("2")
  21. .width(250)
  22. .height(250)
  23. .backgroundColor(Color.Pink)
  24. .textAlign(TextAlign.Center)
  25. .fontSize(30)
  26. }
  27. .indicator(true).vertical(false)
  28. Swiper(this.swiperController) {
  29. Text("0")
  30. .width(250)
  31. .height(250)
  32. .backgroundColor(Color.Gray)
  33. .textAlign(TextAlign.Center)
  34. .fontSize(30)
  35. Text("1")
  36. .width(250)
  37. .height(250)
  38. .backgroundColor(Color.Green)
  39. .textAlign(TextAlign.Center)
  40. .fontSize(30)
  41. Text("2")
  42. .width(250)
  43. .height(250)
  44. .backgroundColor(Color.Pink)
  45. .textAlign(TextAlign.Center)
  46. .fontSize(30)
  47. }
  48. .indicator(true).vertical(true)
  49. }
  50. }
  51. }

在这里插入图片描述

8.每页显示多个子页面

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

  1. @Entry
  2. @Component
  3. struct Index {
  4. private swiperController: SwiperController = new SwiperController();
  5. build() {
  6. Swiper(this.swiperController) {
  7. Text("0")
  8. .width(250)
  9. .height(250)
  10. .backgroundColor(Color.Gray)
  11. .textAlign(TextAlign.Center)
  12. .fontSize(30)
  13. Text("1")
  14. .width(250)
  15. .height(250)
  16. .backgroundColor(Color.Green)
  17. .textAlign(TextAlign.Center)
  18. .fontSize(30)
  19. Text("2")
  20. .width(250)
  21. .height(250)
  22. .backgroundColor(Color.Pink)
  23. .textAlign(TextAlign.Center)
  24. .fontSize(30)
  25. Text("3")
  26. .width(250)
  27. .height(250)
  28. .backgroundColor(Color.Blue)
  29. .textAlign(TextAlign.Center)
  30. .fontSize(30)
  31. }
  32. .indicator(true)
  33. .displayCount(2)
  34. }
  35. }

在这里插入图片描述

 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/267758

推荐阅读
相关标签