首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >203.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件基础结构与状态管理

203.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件基础结构与状态管理

原创
作者头像
全栈若城
发布于 2025-03-27 12:43:37
发布于 2025-03-27 12:43:37
710
举报

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦!

HarmonyOS NEXT系列教程之 TabsConcaveCircle组件基础结构与状态管理

TabsConcaveCircle是一个自定义的底部导航栏组件,它具有独特的凹陷圆形设计。本文将详细介绍该组件的基础结构和状态管理部分。

效果演示

1. 组件导入说明

代码语言:typescript
AI代码解释
复制
import animator, { AnimatorResult } from '@ohos.animator';
import componentUtils from '@ohos.arkui.componentUtils';
import inspector from '@ohos.arkui.inspector';
import { CanvasClipGroove, CanvasCreateRectangle, getImageUrl } from '../../utils/tabbar/Functions';
import { TabMenusInterfaceIRequired } from '../../types/TabMenusInterface';
import { ConcaveCircle } from '../../utils/tabbar/CircleClass';
  • animator: 用于创建和管理动画效果
  • componentUtils: 提供组件相关的工具函数
  • inspector: 用于组件观察和监听
  • 自定义工具函数:
    • CanvasClipGroove: 用于创建凹槽效果
    • CanvasCreateRectangle: 用于创建矩形背景
    • getImageUrl: 处理图片URL
  • TabMenusInterfaceIRequired: 定义选项菜单的接口
  • ConcaveCircle: 处理凹陷圆形的相关计算

2. 组件状态管理

代码语言:typescript
AI代码解释
复制
@Component
export struct TabsConcaveCircle {
  @Link @Watch("getAnimateSelectIndex") selectIndex: number;
  @State animateSelectIndex: number = 0;
  @Prop tabHeight: number = 60;
  @Link tabsMenu: TabMenusInterfaceIRequired[];
  @Prop tabsBgColor: string = "rgb(255, 255, 255)";
  @Prop tabsSelectBgColor: Color | number | string | Resource = "rgba(92, 187, 183,1)";
  @Prop tabsFontColor: Color = Color.Black;
  @Prop tabsSelectFontColor: Color = Color.Black;
}

状态装饰器说明

  1. @Link装饰器:
    • selectIndex: 当前选中项的索引,支持双向绑定
    • tabsMenu: 选项数据集合,支持双向绑定
  2. @State装饰器:
    • animateSelectIndex: 用于控制动画的当前选中项
    • circleInfo: 存储凹陷圆球的信息
    • animationPositionX: 记录当前凹槽位置
    • imageOffsetY: 图片的垂直偏移量
    • imageWH: 图片的宽高
  3. @Prop装饰器:
    • tabHeight: 定义Tabs的高度
    • tabsBgColor: 背景颜色
    • tabsSelectBgColor: 选中球的填充颜色
    • tabsFontColor: 字体颜色
    • tabsSelectFontColor: 选中时的字体颜色

3. Canvas相关配置

代码语言:typescript
AI代码解释
复制
private settings: RenderingContextSettings = new RenderingContextSettings(true);
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings);
  • RenderingContextSettings: 创建Canvas渲染上下文的设置
  • CanvasRenderingContext2D: Canvas的2D渲染上下文,用于绘制图形

4. 动画相关属性

代码语言:typescript
AI代码解释
复制
private canvasAnimator: AnimatorResult | undefined = undefined;
@State animateTime: number = 1000;
  • canvasAnimator: 存储动画实例
  • animateTime: 动画执行时长,默认为1000毫秒

总结

本文介绍了TabsConcaveCircle组件的基础结构和状态管理部分,包括:

  1. 必要的模块导入
  2. 组件的状态管理和属性定义
  3. Canvas相关配置
  4. 动画相关属性

这些基础结构为实现一个具有凹陷圆形效果的底部导航栏提供了必要的框架。在后续文章中,我们将详细介绍组件的动画实现、交互处理和渲染逻辑。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
207.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件完整源码解析
本文将对TabsConcaveCircle组件的完整源码进行详细解析,帮助开发者深入理解组件的实现原理。
全栈若城
2025/03/27
800
205.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件Canvas渲染实现
本文将详细介绍TabsConcaveCircle组件中Canvas的渲染实现,包括背景绘制和凹槽效果的创建。
全栈若城
2025/03/27
810
210.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件动画系统详解
本文将深入解析TabsConcaveCircle组件的动画系统实现,包括选项切换动画和圆球移动动画。
全栈若城
2025/03/27
1150
204.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件动画系统实现
本文将详细介绍TabsConcaveCircle组件中的动画系统实现,包括选项切换动画和凹陷圆球的移动动画。
全栈若城
2025/03/27
1010
209.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件状态管理与生命周期
本文将详细解析TabsConcaveCircle组件中的状态管理和生命周期处理部分,帮助开发者理解组件的核心机制。
全栈若城
2025/03/27
750
206.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件交互处理与事件响应
本文将详细介绍TabsConcaveCircle组件的交互处理和事件响应机制,包括点击事件处理、状态更新和视觉反馈。
全栈若城
2025/03/27
800
211.HarmonyOS NEXT系列教程之 TabsRaisedCircle组件核心实现解析
本文将详细解析TabsRaisedCircle组件的核心实现,包括状态管理、布局结构和交互处理。
全栈若城
2025/03/27
720
217.HarmonyOS NEXT系列教程之 TabBar工具函数与Canvas绘制实现解析
本文将详细解析TabBar中的工具函数和Canvas绘制实现,包括图片处理、尺寸计算和Canvas绘制等核心功能。
全栈若城
2025/03/27
840
214.HarmonyOS NEXT系列教程之 自定义TabBar组件系列总结与最佳实践
本文将对整个自定义TabBar组件系列进行总结,并提供最佳实践指南,帮助开发者更好地理解和使用这些组件。
全栈若城
2025/03/27
1050
鸿蒙开发实战案例:自定义TabBar页签凸起和凹陷案例
本文基于已有的模块自定义TabBar思路,完善了凸起的选择时凸起点交界处的圆滑过度,并扩展了一个 凹陷选择时不遮挡原本内容。
小帅聊鸿蒙
2025/02/25
2850
鸿蒙开发实战案例:自定义TabBar页签凸起和凹陷案例
215.HarmonyOS NEXT系列教程之 CircleClass基础类与圆形效果实现原理解析
本文将详细解析CircleClass基础类及其子类的实现原理,这些类是实现TabBar圆形效果的核心。
全栈若城
2025/03/27
1080
使用 HarmonyOS NEXT 实现签名板的功能
大家好,我是一只会打代码的羊。今天来分享一篇之前使用 ArkTS API9 版本实现的签名板功能,目前鸿蒙已经推出 API12 了,对比 API9 的时候,现在实现一个功能太简单了。这期主要讲一下之前实现功能有多难受,以及如何实现。,现在这套代码也是可以直接迁移到 API12 版本的。
陈杨
2025/03/15
1260
使用 HarmonyOS NEXT 实现签名板的功能
如何利用OpenHarmony ArkUI的Canvas组件实现涂鸦功能?
ArkUI是一套UI开发框架,提供了开发者进行应用UI开发时所需具备的能力。随着OpenAtom OpenHarmony(以下简称“OpenHarmony”)不断更新迭代,ArkUI也提供了很多新的组件,例如Canvas、OffscreenCanvas、XComponent组件等。
小帅聊鸿蒙
2025/04/20
2150
如何利用OpenHarmony ArkUI的Canvas组件实现涂鸦功能?
208.HarmonyOS NEXT系列教程之 CustomDrawTabbarComponent组件实现解析
本文将详细解析CustomDrawTabbarComponent组件的实现,这是一个自定义的TabBar容器组件,展示了如何集成和使用TabsConcaveCircle等自定义导航组件。
全栈若城
2025/03/27
980
鸿蒙开发:简单自定义一个绘制画板
本篇文章,主要是使用Canvas绘制一个简单的画板,可以更改颜色,画笔粗细以及删除操作,主要运用到了CanvasRenderingContext2D中的绘制路径功能,我们可以看下基本实现的效果。
程序员一鸣
2024/12/28
1700
鸿蒙开发:简单自定义一个绘制画板
【HarmonyOS】头像裁剪之手势放大缩小,平移,双击缩放控制(三)
##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财#
GeorgeGcs
2025/06/29
890
HarmonyOS 开发实践 —— 基于Progress组件的进度条
注意:这个Progress组件最常见的是和通用属性rotate一起使用,除了上图这种逆向倒计时,还有那种类似于温度计(从下到上加载)的效果,全都是利用rotate。
小帅聊鸿蒙
2024/12/04
3340
HarmonyOS 开发实践 —— 基于Progress组件的进度条
213.HarmonyOS NEXT系列教程之 CustomDrawTabbarComponent组件功能解析
本文将详细解析CustomDrawTabbarComponent组件的实现,这是一个自定义的TabBar容器组件。
全栈若城
2025/03/27
860
HarmonyOS NEXT实战:页面水印
##HarmonyOS Next实战##HarmonyOS SDK应用服务##教育##
中雨
2025/06/25
1100
鸿蒙开发:绘制服务卡片
绘制卡片就非常的简单了,和平时的应用开发是一样的,但是并不是所有的组件都支持卡片,这里,在官方文档中,每个组件也都有明确的标记,如果支持,那么就会有一个卡片能力显示。
程序员一鸣
2025/06/23
1050
鸿蒙开发:绘制服务卡片
推荐阅读
相关推荐
207.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件完整源码解析
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档