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

HarmonyOS6 ArkTS swiper

文章目录

    • 概述
    • 核心特性
    • 完整示例
    • 核心API解析
      • 1 组件构造器
      • 2 关键属性配置
      • 3 指示器定制(DotIndicator)
      • 4 控制器(SwiperController)
      • 5 核心事件
    • 核心使用要点
      • 1 语法规范(HarmonyOS6 重点)
      • 2 功能使用注意
    • 总结

概述

Swiper 是 HarmonyOS6(API 11+)ArkUI 框架提供的滑块视图容器组件,核心用于实现子组件的滑动轮播展示,是开发轮播图、引导页、卡片滑动等场景的核心组件。该组件从 API Version 7 开始支持,HarmonyOS6 中对其属性、指示器定制、控制器能力进行了优化,支持自动播放、循环滚动、自定义指示器、手动控制翻页等核心能力,且适配多设备布局规范,是鸿蒙应用开发中高频使用的UI容器之一。

核心特性

  1. 支持水平循环滑动,默认开启循环模式,实现无限轮播效果;
  2. 提供自动播放能力,可自定义播放间隔和切换动画时长;
  3. 内置DotIndicator 圆点指示器,支持自定义颜色、尺寸、选中样式;
  4. 提供SwiperController 控制器,实现手动上一页、下一页、跳转到指定页;
  5. 支持边缘露出(prevMargin/nextMargin),实现卡片堆叠的视觉效果;
  6. 可自定义切换动画曲线(如缓入缓出、线性等),提升交互体验;
  7. 提供索引变化事件(onChange),实时监听轮播页切换状态。

完整示例

// SwiperCompleteExample.ets @Entry @Component struct SwiperCompleteExample { private swiperController: SwiperController = new SwiperController(); private swiperData: string[] = [ "轮播项 1", "轮播项 2", "轮播项 3", "轮播项 4", "轮播项 5", "轮播项 6" ]; private bgColors: string[] = [ "#3878F3", "#F5A623", "#86909C", "#68B4FF", "#DDEBFF", "#FFEFC9" ]; @State currentIndex: number = 0; build() { Column({ space: 20 }) { Text('HarmonyOS Swiper 轮播组件') .fontSize(22) .fontWeight(FontWeight.Bold) .alignSelf(ItemAlign.Center); // ========== Swiper 轮播核心 ========== Swiper(this.swiperController) { ForEach(this.swiperData, (item: string, index: number) => { Stack() { Text(item) .fontSize(20) .fontColor("#fff") .fontWeight(FontWeight.Medium); Text(`${index + 1}/${this.swiperData.length}`) .fontSize(14) .fontColor("#ffffff80") .position({ right: 15, bottom: 15 }); } .width("100%") .height(220) .backgroundColor(this.bgColors[index]) .borderRadius(16); }, (item: string) => item); } .width("90%") .height(220) .autoPlay(true) .loop(true) .interval(3000) .duration(600) .curve(Curve.EaseInOut) .itemSpace(10) .prevMargin(25) .nextMargin(25) .indicator( new DotIndicator() .color("#ffffff60") .selectedColor("#ffffff") .itemWidth(8) .itemHeight(8) .selectedItemWidth(20) ) .onChange((index: number) => { this.currentIndex = index; }); // ========== 手动控制按钮组 ========== Row({ space: 15 }) { Button("上一页") .width(100) .backgroundColor("#3878F3") .onClick(() => this.swiperController.showPrevious()); Button("下一页") .width(100) .backgroundColor("#3878F3") .onClick(() => this.swiperController.showNext()); Button("跳转到第3页") .backgroundColor("#F5A623") .onClick(() => this.swiperController.changeIndex(2, true)); } .justifyContent(FlexAlign.Center) .width("100%"); // 当前索引展示 Text(`当前页:${this.currentIndex + 1} / ${this.swiperData.length}`) .fontSize(15) .fontColor("#666"); } .width("100%") .height("100%") .backgroundColor("#f5f5f5") .padding({ top: 30, bottom: 30 }); } }

运行效果如图:
可自动轮播

也可点击按钮跳转相应位置

核心API解析

1 组件构造器

Swiper(controller?:SwiperController)
  • 参数SwiperController为可选控制器,绑定后可通过控制器实现手动翻页,示例中通过new SwiperController()初始化并绑定,是实现手动控制的基础。

2 关键属性配置

示例中使用的核心属性均为 HarmonyOS6 官方推荐配置,对应官方API规范,各属性作用及取值说明如下:

属性名取值核心作用官方默认值
autoPlayboolean(true/false)是否开启自动播放false
loopboolean(true/false)是否开启循环滚动,实现无限轮播true
intervalnumber(毫秒)自动播放的时间间隔3000ms
durationnumber(毫秒)轮播项切换的动画时长400ms
curveCurve 枚举切换动画曲线,示例为缓入缓出(EaseInOut)Curve.Ease
itemSpacenumber轮播项之间的间距0
prevMarginnumber左侧边缘露出的宽度,实现卡片左露边0
nextMarginnumber右侧边缘露出的宽度,实现卡片右露边0
indicatorDotIndicator/DigitIndicator轮播指示器,示例使用圆点指示器DotIndicator(默认样式)

3 指示器定制(DotIndicator)

HarmonyOS6 中 Swiper 内置DotIndicator圆点指示器,支持自定义样式,示例中核心配置项说明:

  • color:未选中圆点的颜色,示例为半透明白(#ffffff60);
  • selectedColor:选中圆点的颜色,示例为纯白色(#ffffff);
  • itemWidth/itemHeight:未选中圆点的宽高,示例为8vp;
  • selectedItemWidth:选中圆点的宽度,示例为20vp(实现拉长的选中效果);

4 控制器(SwiperController)

SwiperController是 Swiper 组件的手动控制核心,示例中使用的3个核心方法覆盖所有手动翻页场景,均为 HarmonyOS6 官方支持方法:

  1. showPrevious():翻到上一页,示例中绑定“上一页”按钮点击事件;
  2. showNext():翻到下一页,示例中绑定“下一页”按钮点击事件;
  3. changeIndex(index: number, useAnimation: boolean):跳转到指定索引页,index为目标索引(从0开始),useAnimation为是否带动画,示例中跳转到第3页(索引2)并开启动画。

5 核心事件

onChange((index:number)=>void)
  • 触发时机:轮播项切换完成,当前显示的索引发生变化时触发;
  • 返回值index为当前选中轮播项的索引(从0开始);
  • 示例作用:实时更新currentIndex状态,实现页面中“当前页”的实时展示,是监听轮播状态的核心事件。

核心使用要点

1 语法规范(HarmonyOS6 重点)

  1. 布局属性链式调用justifyContentalignItems等Flex布局属性,不可写在Row/Column构造参数中,需通过链式调用实现(如示例中Row({ space: 15 }).justifyContent(FlexAlign.Center)),否则会报语法不兼容错误;
  2. 长度单位取值DotIndicatorspacebottom等属性,以及Swiper的prevMarginnextMargin等,HarmonyOS6 中纯数字为默认合法取值(单位vp),无需添加字符串单位(如’6vp’),避免LengthMetrics类型报错;
  3. ForEach 唯一标识:遍历轮播项时,ForEach第三个参数必须传入唯一标识(示例中为(item: string) => item),确保组件渲染稳定性,避免重复渲染或刷新异常。

2 功能使用注意

  1. 循环轮播(loop):开启loop: true时,轮播项数量建议≥3,避免滑动时出现空白或动画异常;
  2. 自动播放(autoPlay):开启后指示器默认支持点击切换,点击后自动播放不会中断,持续循环;
  3. 边缘露出(prevMargin/nextMargin):需配合itemSpace使用,且Swiper子组件需设置width: 100%,否则露出效果不生效;
  4. 控制器绑定SwiperController需先初始化,再传入Swiper构造器,否则手动控制方法调用会无响应。

总结

HarmonyOS6 ArkTS 中的 Swiper 组件在保持低版本兼容性的基础上,优化了指示器定制和语法规范,通过属性配置可快速实现基础轮播效果,结合SwiperControlleronChange事件可实现复杂的手动控制和状态监听。开发时需严格遵循 HarmonyOS6 的语法规范(如布局属性链式调用、长度单位取值),避免常见语法报错,同时根据业务场景灵活调整循环、自动播放、边缘露出等属性,即可实现各类滑动轮播需求。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力!

http://www.cnnetsun.cn/news/1669970.html

相关文章:

  • 深入理解ThreadLocal
  • 手把手教你搭建企业级大模型系统:小白也能收藏的实战指南
  • 3大核心优势:全面掌握Qwen2.5-14B大语言模型的实战部署与应用
  • Phi-3-mini-4k-instruct-gguf快速上手:用浏览器控制台调试Web服务请求响应
  • 悬臂梁的二维与三维有限元(FEM)实现研究附Matlab代码
  • 网络 SEO 招聘需要具备哪些软技能_网络 SEO 招聘需要具备哪些学历背景
  • 如何破解B站缓存文件的使用限制?m4s-converter的跨平台解决方案
  • Java 设计模式・命令模式篇:从思想到代码实现
  • 用快马平台十分钟搭建小龙虾在线商城原型,验证你的餐饮电商创意
  • Cyber Engine Tweaks终极指南:3步掌握赛博朋克2077模组开发与优化
  • 安卓音频子系统之AudioFlinger
  • StringBuilder
  • 7大维度提升抖音资源获取效率:从单线程到企业级解决方案
  • PPTist免费开源在线PPT制作工具:三大核心功能与五分钟上手终极指南
  • Bidili Generator开源镜像:支持BF16/LoRA热插拔/显存治理的全栈开源项目
  • 9大优势打造专业排版:Outfit开源无衬线字体全解析
  • 5步打造无缝手写工作流:Xournal++高效数字笔记解决方案
  • AudioLDM-S音效质量调优:Duration/Steps/Batch Size三参数协同优化指南
  • 5分钟上手WebPlotDigitizer:从图表图像中提取数据的智能助手
  • 同一篇论文知网检测AI率每次不同?不是玄学是这个
  • SEO_新手必学的SEO优化基础教程与步骤详解(351 )
  • Graphormer效果展示:OGB基准SOTA分子属性预测结果实测分享
  • 基础架构架构师岗位技术手册
  • Spring IOC/DI 管理第三方Bean + 加载properties配置文件详解(Spring系列2)
  • 终极文件伪装指南:apate如何3秒内让你的文件“改头换面“
  • Full Page Screen Capture:智能滚动截图的完整网页保存方案 | 开发者与内容创作者必备
  • 为Windows 11 LTSC添加应用商店:3步实现系统功能完整化的创新解决方案
  • 【参数拟合】基于CMA-ES优化算法的OER模型全自动参数拟合系统附Matlab代码
  • 4大突破重构Web演示文稿创作体验:PPTist技术解析与实践指南
  • SRWE:突破Windows窗口限制的全能尺寸编辑工具