当前位置: 首页 > news >正文

HarmonyOS7 Swiper 轮播:banner 自动播放案例

文章目录

    • 前言
    • 最基础的 Swiper
    • 自动播放
      • 代码实现
    • 监听当前页 & 自定义指示器
      • 核心代码
      • 完整示例
    • 竖向轮播 & 一屏多页
      • 代码解析
    • 常见误区(小白必踩)
    • 完整可运行示例:Swiper 自动轮播
      • 实现拆解
    • 写在最后

前言

打开任何电商、资讯 app,顶部那个"左右滑动的广告 banner"就是Swiper轮播。它自动播放、手指能滑、底下还有小圆点指示当前页。

这篇文章我把 Swiper 的常用配置讲透:怎么自动播放、怎么加指示器、怎么监听当前页。一套 banner 代码直接抄走。

最基础的 Swiper

@Localbanners:string[]=['a','b','c']// 图片资源或地址build(){Swiper(){ForEach(this.banners,(item)=>{Image($r('app.media.'+item)).width('100%').height(160).objectFit(ImageFit.Cover)},(item)=>item)}.width('100%').height(160).indicator(true)// 显示小圆点指示器.loop(true)// 循环播放}

要点:

  • Swiper()里放子组件,每个子项是一页。
  • .indicator(true):底部显示小圆点,告诉用户有几页、当前第几页。
  • .loop(true):播到最后一张自动回到第一张,循环不停。

自动播放

加上两条配置就能自动轮播:

代码实现

Swiper(){// ...}.autoPlay(true)// 自动播放.interval(3000)// 每 3 秒切一张.duration(500)// 切换动画 500ms
  • autoPlay(true):开自动播放。
  • interval(3000):间隔 3 秒,单位毫秒。
  • duration(500):单张切换的动画时长,影响顺滑度。

监听当前页 & 自定义指示器

想知道现在在第几页,用onChange;想做更漂亮的指示器,关掉默认、自己画:

核心代码

@Localcurrent:number=0Swiper(){// ...}.indicator(false)// 关掉默认指示器.onChange((idx:number)=>{this.current=idx// 记录当前页,用来高亮自定义圆点})

配合底部一排自定义圆点,用current决定哪个高亮:

完整示例

Row(){ForEach(this.banners,(_,i)=>{Circle({width:8,height:8}).fill(i===this.current?'#FF4500':'#CCCCCC').margin(4)})}.justifyContent(FlexAlign.Center)

竖向轮播 & 一屏多页

Swiper 还能竖着滑、或一屏显示多个:

代码解析

Swiper(){// ...}.vertical(true)// 竖向轮播.displayCount(2)// 一屏显示 2 页(适合卡片墙)
  • vertical(true):上下滑动切换。
  • displayCount(2):一次露两页,适合做"推荐卡片"横滑列表。

常见误区(小白必踩)

误区说明
loop(true)播到最后一张直接停,没有循环效果,banner 体验断档。
interval太短低于 2 秒用户来不及看,3 秒是比较舒服的节奏。
只用默认指示器想要更花哨的自定义圆点,关掉默认indicator(false)自己画。

下面这段代码可以直接复制到 DevEco Studio 里运行。建议你边读边敲,改一改文末「动手改一改」里的参数,亲眼看看效果。

完整可运行示例:Swiper 自动轮播

banner 自动播放 + 指示点。

实现拆解

// Swiper 自动轮播@Entry@Componentstruct Banner{privatetitles:string[]=['活动一','活动二','活动三']build(){Swiper(){ForEach(this.titles,(t:string)=>{Text(t).width('100%').height(160).textAlign(TextAlign.Center).backgroundColor('#007DFF').fontColor('#FFF').fontSize(22)})}.autoPlay(true)// 自动播放.interval(3000)// 3 秒一切.indicator(true)// 显示指示点.loop(true)// 循环.width('100%')}}

你会看到什么:蓝底 banner 每 3 秒自动切换一屏,底部有小圆点指示当前页,滑到最后会循环回第一屏。

动手改一改

  • interval(3000)改成1000,看切换变快。
  • indicator(true)改成indicator(false),隐藏圆点。
  • Text换成Image,做成真实图片轮播。

写在最后

Swiper 是 banner 的标配,记住四个配置就够用:indicator(指示器)、loop(循环)、autoPlay+interval(自动播)、onChange(监听页)。需要更花哨的指示器就关掉默认的自己画。

把你 app 的首页顶部换成 Swiper banner,加上自动播放和圆点——这一下子就有"大厂 app"的观感了。记住 interval 别太短,3 秒是比较舒服的节奏。

http://www.jsqmd.com/news/1180444/

相关文章:

  • 从MySQL到DM8:TP5项目国产化迁移中的数据库适配与核心代码改造实战
  • 2026 沈阳靠谱黄金回收商家推荐,无损耗无折旧费 - 奢品小当家
  • 腾讯云短信 API 错误 1012/1016 排查指南:签名模板审核与 3 种配置问题定位
  • 终极指南:如何免费使用Poppins多语言几何字体提升设计品质
  • STM32F334R8与MCP3551高精度ADC接口设计与优化
  • 百达翡丽保养一次多少钱官方售后费用标准解析权威公示(2026年7月最新) - 百达翡丽官方售后中心
  • PIC18F87J10与DTH-08传感器上拉电阻配置与通信实现
  • BarrageGrab技术深度解析:高性能实时直播弹幕抓取架构设计指南
  • 亨得利官方名表服务中心|最新热线和完整地址权威信息声明(2026年7月最新) - 亨得利官方博客
  • 2026南京上门黄金回收排名|时效、报价、安全三大指标综合测评 - 禹竞奢收行
  • 亲身到店探访合肥亨得利官方名表服务中心|地址与售后服务电话(2026年7月更新) - 亨得利官方
  • ArcGIS Pro 3.2 脚本工具:国土报批TXT转SHP,3步解决地块融合与属性丢失
  • KMS智能激活脚本:5分钟永久激活Windows和Office的完整指南
  • B站成分检测器:3分钟快速识别评论区用户真实身份
  • 完全背包—洛—纸币问题 1
  • 3分钟解决图片格式烦恼:为什么这个右键菜单工具成为浏览器必备扩展?
  • N_m3u8DL-RE终极指南:让流媒体下载变得如此简单
  • EldenRingSaveCopier:艾尔登法环存档安全迁移与多版本兼容解决方案
  • 《LeetCode 1218 最长定差子序列 || LeetCode 873 最长的斐波那契序列的长度》
  • 2026成都高价回收门店实测,贴合大盘价实体回收商家汇总 - 奢侈品回收评测
  • 电流采样电阻 PCB 布局实战:3 种开尔文接法对比与 0.1% 精度实现
  • SPSS 27 问卷星数据导入实战:3步解决乱码与变量定义,效率提升50%
  • VMware Workstation 17 网络配置:3种场景下开发板、PC、虚拟机互ping方案对比
  • 多智能体强化学习实战:小球团体赛协作算法解析
  • 终极暗黑破坏神2角色编辑器:5分钟掌握Diablo Edit2完整使用指南
  • Chrome插件开发实战:基金重仓股实时涨幅计算
  • U校园题库数据结构分析:55道典型题型的 5 种解题模式归纳
  • SPT-AKI存档编辑器终极指南:如何轻松管理你的塔科夫单机版角色
  • ThinkPad风扇控制终极指南:3步实现智能散热与静音平衡
  • 四川自来水、喷淋管道漏水探测哪家靠谱?2026成都漏水检测机构测评 - 品研笔录