HarmonyOS API 15 新晋导航点组件Indicator详解

简介: 本节介绍HarmonyOS API 15新增的导航点组件Indicator的特性和用法,支持圆点和数字两种导航样式。示例基于DevEco Studio 5.0.5,展示如何不依赖Swiper组件独立显示导航点。通过IndicatorComponentController控制翻页,设置初始索引、样式、循环、总数及方向等属性,并处理索引变化事件。代码示例详细解析各属性与事件的功能,适用于API Version 15及以上版本,支持ArkTS卡片和元服务使用。源码托管于《跟老卫学HarmonyOS开发》GitHub仓库。

 本节演示HarmonyOS API 15新晋导航点组件Indicator的特性及用法。

所使用的环境为:DevEco Studio 5.0.5 Release

导航点组件Indicator概述

导航点组件Indicator,提供圆点导航点以及数字导航点两种导航点样式。

该组件从API Version 15开始支持,将原Swiper组件中的Indicator已有的能力作为一个单独组件提供给开发者使用。开发者可以不依赖Swiper组件单独显示导航点,也可以通过IndicatorComponentController与Swiper组件绑定使用。

当多个导航点组件和同一个Swiper绑定时,只有最后一个导航点组件能成功和Swiper绑定。

当一个导航点组件和多个Swiper绑定时,只有最后一个Swiper能成功和导航点组件绑定。

创建一个不依赖Swiper组件单独显示导航点的示例

创建一个名为“ArkTSIndicator”的项目,用于演示不依赖Swiper组件单独显示导航点。

修改Index.ets,内容如下:

@Entry

@Component

struct Index {

 @State indicatorIndex: number = 0;


 // Indicator组件的控制器,可以将此对象绑定至Indicator组件来控制翻页。

 private indicatorController: IndicatorComponentController = new IndicatorComponentController();


 build() {

   Column() {

     Text(this.indicatorIndex + '')

       .fontSize($r('app.float.page_text_font_size'))

       .fontWeight(FontWeight.Bold)


     IndicatorComponent(this.indicatorController)

       .initialIndex(0) // 设置首次显示时当前导航点的索引值。

       .style( // 可选导航点指示器样式。

         new DotIndicator()

           .itemWidth(25)

           .itemHeight(25)

           .selectedItemWidth(25)

           .selectedItemHeight(25)

           .color(Color.Gray)

           .selectedColor(Color.Blue))

       .loop(true) // 设置是否开启循环

       .count(6) // 设置导航点总数量

       .vertical(false) // 设置是否为纵向滑动

       // 当前显示的选中导航点索引变化时触发该事件,可通过回调函数获取当前选中导航点的索引值。

       .onChange((index: number) => {

         console.log("current index: " + index );


         // 索引赋值给变量indicatorIndex

         this.indicatorIndex = index;

       })

   }

   .height('100%')

   .width('100%')

 }

}


运行效果如下

视频演示效果,可见B站:https://www.bilibili.com/video/BV1AE76z5Ei8/

代码解读

在上述示例中,IndicatorComponentController是Indicator组件的控制器,可以将此对象绑定至Indicator组件来控制翻页。

接口IndicatorComponent(controller?: IndicatorComponentController)是单独导航点组件的构造函数,可配置该组件的控制器。描述如下:

  • 卡片能力: 从API version 15开始,该接口支持在ArkTS卡片中使用。
  • 元服务API: 从API Version 15开始,该接口支持在元服务中使用。
  • 系统能力: SystemCapability.ArkUI.ArkUI.Full

IndicatorComponent的属性initialIndex(index: number)是用于设置首次显示时当前导航点的索引值。设置小于0或大于等于导航点数量时,按照默认值0处理。单独导航点组件和Swiper绑定的时候,该属性不生效。描述如下:

  • 卡片能力: 从API version 15开始,该接口支持在ArkTS卡片中使用。
  • 元服务API: 从API version 15开始,该接口支持在元服务中使用。
  • 系统能力: SystemCapability.ArkUI.ArkUI.Full

IndicatorComponent的属性style(indicatorStyle: DotIndicator | DigitIndicator)是用于设置可选导航点指示器样式。可选导航点指示器样式可以是 DotIndicator或者DigitIndicator,其中 DotIndicator是圆点指示器样式;DigitIndicator是数字指示器样式。默认类型是DotIndicator。描述如下:

  • 卡片能力: 从API version 15开始,该接口支持在ArkTS卡片中使用。
  • 元服务API: 从API version 15开始,该接口支持在元服务中使用。
  • 系统能力: SystemCapability.ArkUI.ArkUI.Full

IndicatorComponent的属性loop(isLoop: boolean)是用于设置是否开启循环。单独导航点组件和Swiper绑定的时候,该属性不生效。描述如下:

  • 卡片能力: 从API version 15开始,该接口支持在ArkTS卡片中使用。
  • 元服务API: 从API version 15开始,该接口支持在元服务中使用。
  • 系统能力: SystemCapability.ArkUI.ArkUI.Full

IndicatorComponent的属性count(totalCount: number)是用于设置导航点总数量。单独导航点组件和Swiper绑定的时候,以Swiper的页面数量为准。描述如下:

  • 卡片能力: 从API version 15开始,该接口支持在ArkTS卡片中使用。
  • 元服务API: 从API version 15开始,该接口支持在元服务中使用。
  • 系统能力: SystemCapability.ArkUI.ArkUI.Full

IndicatorComponent的属性vertical(isVertical: boolean)是用于设置是否为纵向滑动。单独导航点组件和Swiper绑定的时候,该属性不生效。描述如下:

  • 卡片能力: 从API version 15开始,该接口支持在ArkTS卡片中使用。
  • 元服务API: 从API version 15开始,该接口支持在元服务中使用。
  • 系统能力: SystemCapability.ArkUI.ArkUI.Full

IndicatorComponent的事件onChange(event: Callback<number>)是用于当前显示的选中导航点索引变化时触发该事件,可通过回调函数获取当前选中导航点的索引值。描述如下:

  • 卡片能力: 从API version 15开始,该接口支持在ArkTS卡片中使用。
  • 元服务API: 从API version 15开始,该接口支持在元服务中使用。
  • 系统能力: SystemCapability.ArkUI.ArkUI.Full

当前显示的选中导航点索,会将当前选中导航点的索引值复制给变量indicatorIndex,从而在上方的Text组件中展示出来。

源码

本示例源码归档至《跟老卫学HarmonyOS开发》:https://github.com/waylau/harmonyos-tutorial

目录
相关文章
|
14天前
|
开发者 容器
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
115 12
|
15天前
|
API 数据处理
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解滑块Slider和进度条Progress组件的使用。
|
21天前
|
人工智能 API 网络架构
HarmonyOS Navigation实现导航与路由切换
HarmonyOS Navigation实现导航与路由切换
48 0
HarmonyOS Navigation实现导航与路由切换
|
4月前
|
定位技术 开发工具
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
148 5
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
|
4月前
|
JavaScript 开发工具 开发者
【HarmonyOS 5】鸿蒙Web组件和内嵌网页双向通信DEMO示例
【HarmonyOS 5】鸿蒙Web组件和内嵌网页双向通信DEMO示例
103 3
|
4月前
|
开发者
鸿蒙仓颉开发语言实战教程:自定义组件
本文介绍了如何在仓颉开发语言中创建自定义组件,以封装和管理项目中的 tabbar 组件为例。通过创建独立的组件文件 yltabbar.cj,并使用 @Component 和 @Link 等修饰符实现组件化开发与参数传递,提升代码复用性和项目可维护性。适合希望深入掌握仓颉语言组件开发的 HarmonyOS 开发者学习参考。 #HarmonyOS #仓颉 #购物
|
17天前
|
数据安全/隐私保护 开发者
鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&TextInput
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解文本组件Text和TextInput的使用。
125 3
|
缓存 数据安全/隐私保护 JavaScript
【HarmonyOS 5】鸿蒙页面和组件生命周期函数
【HarmonyOS 5】鸿蒙页面和组件生命周期函数
176 0
|
4月前
|
存储 IDE 定位技术
【HarmonyOS 5】鸿蒙组件&模板服务详解 - 助力高效开发的利器
在移动应用开发领域,效率与质量始终是开发者追求的核心目标。鸿蒙系统作为新兴的操作系统,为开发者提供了丰富且强大的开发资源,其中鸿蒙组件&模板服务更是成为开发者快速构建高质量应用的得力助手。
139 0
鸿蒙仓颉语言开发教程:页面和组件的生命周期
仓颉语言中的生命周期指页面或组件从加载到消失的过程。与ArkTs不同,仓颉需在生命周期方法前添加`protected open`修饰符,如`aboutToAppear()`、`onPageShow()`等。部分函数如`onBackPress()`返回布尔值,决定是否拦截系统返回操作。仅`@Entry`组件支持全部生命周期,普通组件仅支持`aboutToAppear`和`aboutToDisappear`。掌握正确写法可避免踩坑。