203.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件基础结构与状态管理
2025-03-27 21:49:28
240次阅读
0个评论
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦!

HarmonyOS NEXT系列教程之 TabsConcaveCircle组件基础结构与状态管理
TabsConcaveCircle是一个自定义的底部导航栏组件,它具有独特的凹陷圆形设计。本文将详细介绍该组件的基础结构和状态管理部分。
效果演示

1. 组件导入说明
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. 组件状态管理
@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;
}
状态装饰器说明
- 
  @Link装饰器:- selectIndex: 当前选中项的索引,支持双向绑定
- tabsMenu: 选项数据集合,支持双向绑定
 
- 
  @State装饰器:- animateSelectIndex: 用于控制动画的当前选中项
- circleInfo: 存储凹陷圆球的信息
- animationPositionX: 记录当前凹槽位置
- imageOffsetY: 图片的垂直偏移量
- imageWH: 图片的宽高
 
- 
  @Prop装饰器:- tabHeight: 定义Tabs的高度
- tabsBgColor: 背景颜色
- tabsSelectBgColor: 选中球的填充颜色
- tabsFontColor: 字体颜色
- tabsSelectFontColor: 选中时的字体颜色
 
3. Canvas相关配置
private settings: RenderingContextSettings = new RenderingContextSettings(true);
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings);
- RenderingContextSettings: 创建Canvas渲染上下文的设置
- CanvasRenderingContext2D: Canvas的2D渲染上下文,用于绘制图形
4. 动画相关属性
private canvasAnimator: AnimatorResult | undefined = undefined;
@State animateTime: number = 1000;
- canvasAnimator: 存储动画实例
- animateTime: 动画执行时长,默认为1000毫秒
总结
本文介绍了TabsConcaveCircle组件的基础结构和状态管理部分,包括:
- 必要的模块导入
- 组件的状态管理和属性定义
- Canvas相关配置
- 动画相关属性
这些基础结构为实现一个具有凹陷圆形效果的底部导航栏提供了必要的框架。在后续文章中,我们将详细介绍组件的动画实现、交互处理和渲染逻辑。
00
- 0回答
- 5粉丝
- 0关注
相关话题
- 209.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件状态管理与生命周期
- 206.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件交互处理与事件响应
- 74.HarmonyOS NEXT ImageItemView组件深度剖析:组件基础结构与核心状态管理(一)
- 204.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件动画系统实现
- 205.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件Canvas渲染实现
- 207.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件完整源码解析
- 210.HarmonyOS NEXT系列教程之 TabsConcaveCircle组件动画系统详解
- HarmonyOS NEXT 头像制作项目系列教程之 ---HarmonyOS数据共享与状态管理教程
- 196.HarmonyOS NEXT系列教程之图案锁状态管理详解
- 175.HarmonyOS NEXT系列教程之列表交换组件状态管理机制
- 149.HarmonyOS NEXT系列教程之3D立方体旋转轮播案例讲解之状态管理与数据结构
- harmony OS NEXT-ArkTS组件结构和状态管理
- HarmonyOS NEXT 头像制作项目系列教程之 --- 权限配置与管理
- 189.HarmonyOS NEXT系列教程之图案锁组件基础架构详解
- 107.HarmonyOS NEXT 跑马灯组件详解(三): 数据结构与状态管理

