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

HarmonyOS6 ArkTS ArcList 使用

文章目录

    • 一、概述
    • 二、适用环境
    • 三、核心组件结构
    • 四、代码完整示例
    • 五、ArcList 构造参数说明
    • 六、ArcList 核心属性
      • 1. space
      • 2. borderRadius
      • 3. 焦点相关(穿戴设备必备)
      • 4. 常用高级属性
    • 七、ArcListItem 使用规范
    • 八、Header 头部配置
    • 九、圆形表盘适配(关键)
    • 十、数据渲染
  • 总结

一、概述

ArcList是 HarmonyOS 面向穿戴设备(Wearable)提供的弧形滚动列表专用组件,专为圆形表盘设计,呈现弧形排列的列表交互效果,支持表冠控制、链式动画、边缘渐隐、头部自定义等穿戴设备核心交互能力。

二、适用环境

  • 设备类型:Wearable 穿戴设备(圆形表盘)
  • 支持版本:API 18+
  • 子组件限制:仅支持 ArcListItem
  • 不支持:手机、平板、车机等非穿戴设备

三、核心组件结构

ArcList 采用固定层级结构,不可嵌套其他容器:

ArcList ├─ 头部(header:ComponentContent) └─ ArcListItem(必须是直接子组件)

四、代码完整示例

// xxx.etsimport{ComponentContent,LengthMetrics}from'@kit.ArkUI';import{UIContext,CircleShape}from'@kit.ArkUI';// 从API version 22开始,无需手动导入ArcListAttribute和ArcListItemAttribute。具体请参考ArcList、ArcListItem的导入模块说明。import{ArcList,ArcListItem,ArcListAttribute,ArcListItemAttribute}from'@kit.ArkUI';@BuilderfunctionbuildText(){Column(){Text('header').fontSize('60px').fontWeight(FontWeight.Bold).fontColor(Color.Black)}.margin(0)}@Entry@Componentstruct Index{@StateprivatenumItems:number[]=[0,1,2,3,4,5,6,7,8,9];privatewatchSize:string='466px';// Wearable默认宽高:466*466privatelistSize:string='414px';// item宽度context:UIContext=this.getUIContext();tabBar1:ComponentContent<Object>=newComponentContent(this.context,wrapBuilder(buildText));@BuilderbuildList2(){Stack(){Column(){}.justifyContent(FlexAlign.Center).width(this.watchSize).height(this.watchSize).clipShape(newCircleShape({width:'100%',height:'100%'})).backgroundColor(Color.White)ArcList({initialIndex:0,header:this.tabBar1}){ForEach(this.numItems,(item:number,index:number)=>{ArcListItem(){Button(''+item,{type:ButtonType.Capsule}).width(this.listSize).height('100px').fontSize('40px').focusable(true).focusOnTouch(true).backgroundColor(0x17A98D)}.align(Alignment.Center)},(item:number,index:number)=>(item+index).toString())}.space(LengthMetrics.px(10)).borderRadius(this.watchSize).focusable(true).focusOnTouch(true).defaultFocus(true)}.align(Alignment.Center).width(this.watchSize).height(this.watchSize).border({color:Color.Black,width:1}).borderRadius(this.watchSize)}build(){Column(){this.buildList2()}.width('100%').height('100%').alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center)}}

在模拟器上的运行效果如图,但是应该放在穿戴设备上进行运行,这里为了图方便,运行出来是这样的:

五、ArcList 构造参数说明

ArcList 支持两个可选构造参数:

参数说明
initialIndex列表初始化时显示的起始索引
header列表头部,必须使用ComponentContent类型

示例:

ArcList({initialIndex:0,header:this.tabBar1})

六、ArcList 核心属性

1. space

设置ArcListItem之间的间距。

.space(LengthMetrics.px(10))

2. borderRadius

设置弧形列表圆角,穿戴设备通常设置为表盘宽度,实现圆形裁剪。

.borderRadius(this.watchSize)

3. 焦点相关(穿戴设备必备)

.focusable(true)// 可获取焦点.focusOnTouch(true)// 触摸时获取焦点.defaultFocus(true)// 默认获取焦点

4. 常用高级属性

属性作用
chainAnimation开启链式联动动画
fadingEdge开启边缘渐隐效果
digitalCrownSensitivity设置表冠灵敏度
cachedCount设置预加载项数量
edgeEffect设置边缘回弹效果

七、ArcListItem 使用规范

  • 必须是 ArcList 的直接子组件
  • 内部可放置按钮、文本、图标等
  • 支持.align(Alignment.Center)居中对齐

示例:

ArcListItem(){Button(''+item,{type:ButtonType.Capsule}).width(this.listSize).height('100px').fontSize('40px')}.align(Alignment.Center)

八、Header 头部配置

ArcList 头部必须使用 ComponentContent 包装,步骤如下:

  1. 定义@Builder构建器
@BuilderfunctionbuildText(){Column(){Text('header').fontSize('60px').fontWeight(FontWeight.Bold).fontColor(Color.Black)}.margin(0)}
  1. 创建 ComponentContent 实例
context:UIContext=this.getUIContext();tabBar1:ComponentContent<Object>=newComponentContent(this.context,wrapBuilder(buildText));
  1. 传入 ArcList 构造参数
ArcList({initialIndex:0,header:this.tabBar1})

九、圆形表盘适配(关键)

穿戴设备屏幕为圆形,必须使用clipShape+CircleShape实现圆形裁剪:

.clipShape(newCircleShape({width:'100%',height:'100%'}))

同时设置:

.borderRadius(this.watchSize)

使 ArcList 完全贴合圆形表盘。

十、数据渲染

使用ForEach遍历数据渲染ArcListItem,必须提供唯一键值

ForEach(this.numItems,(item:number,index:number)=>{ArcListItem(){...}},(item,index)=>(item+index).toString())

总结

  1. 仅支持 Wearable 设备,手机/平板无法运行。
  2. 必须使用API 18+工程。
  3. 子组件只能是 ArcListItem,不可嵌套 Column/Row 等容器。
  4. 表冠交互仅在真实设备或穿戴模拟器生效。
  5. borderRadius设置为表盘宽度才能呈现弧形列表效果。

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

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

相关文章:

  • 霜儿-汉服-造相Z-Turbo提示词安全过滤:构建防恶意输入的预处理模块
  • 从Java 8到21:除了语法糖,这些底层‘硬核’升级才是性能飞跃的关键
  • 如何系统化构建黑苹果配置:智能EFI自动化工具深度指南
  • 从Halcon到OpenCV4:我如何把手眼标定代码从‘臃肿’优化到‘高效’
  • VR自行车|开启沉浸式交通安全新体验
  • 什么是人工智能代理,怎么使用它?
  • 保姆级教程:在Ubuntu 20.04上为Wheeltec智能小车配置ROS巡线环境(附避坑指南)
  • StructBERT在嵌入式Linux设备上的轻量化部署方案
  • Cursor Pro破解工具:如何通过开源技术方案实现AI编程助手无限制使用?
  • 从BRAM到LUT缓存:拆解一个基于ZYNQ的简易图像预处理加速方案(附源码)
  • Qwen3.5-9B开源大模型入门必看:128K长上下文+代码生成实操指南
  • GSEA结果解读指南:如何从NES值、p.adjust中挖出关键生物学意义?
  • OpCore-Simplify:零代码黑苹果自动化配置工具新手教程
  • 3大技术突破让开发者实现高效系统定制:OpCore Simplify开源工具技术解析
  • ai辅助开发新体验:让快马平台智能解析与生成你的comfyui工作流
  • 5步攻克TradingAgents-CN本地化部署:从环境搭建到智能体协同
  • IPXWrapper终极指南:让Windows 11完美兼容经典游戏联机对战
  • Python驱动CST自动化:高效数据导出实战指南
  • Bosch SMI810 IMU传感器在无人机飞控中的应用与优化
  • 告别‘实验室玩具’:Grasp-Anything数据集如何让机器人抓取真正走进现实场景
  • 乙巳马年·皇城大门春联生成终端W安全部署实践:网络配置与访问控制
  • springboot+vue基于web的企业员工绩效工资管理系统设计与实现
  • 重塑foobar2000音乐体验:foobox-cn界面美化与功能增强指南
  • 新手入门:用FOFA、360Quake、Shodan、ZoomEye这四大网络测绘工具,5分钟快速定位暴露在公网的资产
  • nli-distilroberta-base集成到VSCode Codex插件:智能代码注释生成
  • TDOA vs TOA vs AOA:2025年主流定位算法横评与选型指南
  • AI自动运维落地:Open Interpreter系统命令执行教程
  • OpenPager库:嵌入式POCSAG高精度收发实现
  • 新手必看:RexUniNLU中文NLP系统快速入门与常见问题解决
  • GodotPckTool 终极指南:如何在命令行中高效管理Godot游戏资源包