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

HarmonyOS开发之Swiper的使用(跳转到指定索引的方法)

一,效果图

class MyDataSource implements IDataSource {private list: number[] = []private listener: DataChangeListenerconstructor(list: number[]) {this.list = list}totalCount(): number {return this.list.length}getData(index: number): any {return this.list[index]}registerDataChangeListener(listener: DataChangeListener): void {this.listener = listener}unregisterDataChangeListener() {}
}// 测试用例
@Entry
@Component
struct SwiperExamplePage1 {private swiperController: SwiperController = new SwiperController()private data: MyDataSource = new MyDataSource([])@State currentIndex: number = 0; // 用于存储当前的索引aboutToAppear(): void {let list = []for (var i = 1; i <= 10; i++) {list.push(i.toString());}this.data = new MyDataSource(list)}onPageShow(){this.navigateToIndex(5)}// 实现跳转到指定索引的方法navigateToIndex(index: number): void {const difference = index - this.currentIndex; // 计算差值if (difference > 0) {for (let i = 0; i < difference; i++) {this.swiperController.showNext(); // 向右滑动}} else if (difference < 0) {for (let i = 0; i < Math.abs(difference); i++) {this.swiperController.showPrevious(); // 向左滑动}}}build() {Column({ space: 5 }) {Swiper(this.swiperController) {LazyForEach(this.data, (item: string) => {Text(item).width('90%').height(160).backgroundColor(0xAFEEEE).textAlign(TextAlign.Center).fontSize(30)}, item => item)}.cachedCount(2).index(1).autoPlay(true).interval(4000).indicator(true).loop(true).duration(1000).itemSpace(0).curve(Curve.Linear).onChange((index: number) => {this.currentIndex=indexconsole.info(index.toString())})Row({ space: 12 }) {Button('showNext').onClick(() => {})Button('showPrevious').onClick(() => {this.swiperController.showPrevious()})}.margin(5)}.width('100%').margin({ top: 5 })}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【百日算法计划】:每日一题,见证成长(011)
  • 第二章:表操作
  • 从生成器函数Generator出发,聊聊Async await
  • 多线程相关面试题
  • 免费扫描试卷的软件有哪些?5个软件帮助你轻松进行试卷扫描
  • GO HTTP库使用
  • Jmeter_循环获取请求接口的字段,并写入文件
  • golang学习笔记11——Go 语言的并发与同步实现详解
  • 信号与槽,QMainWindow中常用类的使用
  • SpringCache源码解析(三)——@EnableCaching
  • Vue 中实现视频播放的艺术
  • git使用手册
  • 离线安装NuGet组件方法
  • 大学生租房平台:SpringBoot技术实现详解
  • Anthropic 的 Claude AI 如何可能超过 OpenAI 的 ChatGPT?
  • Consul Config 使用Git做版本控制的实现
  • eclipse的离线汉化
  • es6(二):字符串的扩展
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • 关于springcloud Gateway中的限流
  • 和 || 运算
  • 深入浅出Node.js
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • elasticsearch-head插件安装
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • UI设计初学者应该如何入门?
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2)STL算法之元素计数
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Oracle)SQL优化技巧(一):分页查询
  • (力扣)1314.矩阵区域和
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (算法)大数的进制转换
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • .DFS.
  • .env.development、.env.production、.env.staging
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core 成都线下面基会拉开序幕
  • .NET Core 中的路径问题
  • .NET 表达式计算:Expression Evaluator
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • /var/spool/postfix/maildrop 下有大量文件
  • [Android]创建TabBar
  • [C++]二叉搜索树
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [Day 8] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • [Deepin] 简单使用 RustDesk 实现远程访问Deepin