# 动画按钮组件开发实战:HarmonyOS ArkTS 多彩交互动画按钮应用解析
一、应用概述动画按钮是移动应用中最基础也是最重要的交互元素之一。一个精心设计的动画按钮不仅能提升用户体验还能引导用户操作、传达品牌个性、增加界面的趣味性。本文将以 HarmonyOS ArkTS 框架为基础详细解析一个功能丰富的动画按钮组件的开发过程该组件支持缩放、旋转、淡入淡出三种核心动画效果以及多种动画触发方式。1.1 功能特性缩放动画Scale按钮在触发时按比例放大或缩小产生弹跳效果旋转动画Rotate按钮在触发时绕中心轴旋转指定角度淡入淡出动画Fade按钮在触发时改变透明度产生渐隐渐现效果组合动画支持同时应用多种动画效果可配置参数动画时长、曲线、延迟、循环次数等均可自定义多触发方式支持点击触发、长按触发、悬停触发等多种模式状态反馈按钮在不同状态正常/按下/禁用下有不同视觉表现1.2 适用场景表单提交按钮功能开关按钮菜单展开按钮收藏/点赞按钮播放/暂停控制按钮游戏中的交互按钮1.3 技术亮点动画按钮组件是对 ArkTS 动画系统的全面应用涵盖了隐式动画、显式动画、关键帧动画等多种动画实现方式是学习 ArkTS 动画机制的经典案例。二、技术架构2.1 整体架构┌──────────────────────────────────────────┐ │ AnimatedButtonContainer │ │ 动画按钮控制器 │ ├──────────────────────────────────────────┤ │ ┌────────────────────────────────────┐ │ │ │ AnimatedButton │ │ │ │ ┌────────────────────────────┐ │ │ │ │ │ 按钮背景层 │ │ │ │ │ │ ┌──────────────────────┐ │ │ │ │ │ │ │ 按钮内容层 │ │ │ │ │ │ │ │ (图标/文字/组合) │ │ │ │ │ │ │ └──────────────────────┘ │ │ │ │ │ └────────────────────────────┘ │ │ │ └────────────────────────────────────┘ │ │ │ │ ┌────────────────────────────────────┐ │ │ │ 动画效果控制层 │ │ │ │ Scale | Rotate | Fade | 组合 │ │ │ └────────────────────────────────────┘ │ └──────────────────────────────────────────┘2.2 核心数据结构// 动画类型枚举 enum AnimationType { SCALE scale, ROTATE rotate, FADE fade, COMBINE combine } // 动画配置接口 interface AnimationConfig { type: AnimationType; // 动画类型 duration: number; // 动画时长毫秒 curve: Curve; // 动画曲线 delay: number; // 延迟时间毫秒 iterations: number; // 循环次数-1 无限 // 缩放参数 scaleFrom?: number; // 初始缩放比例 scaleTo?: number; // 目标缩放比例 // 旋转参数 rotateFrom?: number; // 初始角度 rotateTo?: number; // 目标角度度 // 淡入淡出参数 opacityFrom?: number; // 初始透明度 opacityTo?: number; // 目标透明度 } // 按钮状态枚举 enum ButtonState { NORMAL normal, // 正常状态 PRESSED pressed, // 按下状态 ACTIVE active, // 激活状态 DISABLED disabled // 禁用状态 } // 触发方式枚举 enum TriggerMode { CLICK click, // 点击触发 LONG_PRESS longPress, // 长按触发 HOVER hover, // 悬停触发 TOGGLE toggle // 切换模式 }2.3 状态管理模型State buttonState: ButtonState → 按钮当前状态 State isAnimating: boolean → 是否正在动画 State isActive: boolean → 切换模式的激活状态 State scaleValue: number 1.0 → 当前缩放值 State rotateValue: number 0 → 当前旋转角度 State opacityValue: number 1.0 → 当前透明度值三、核心代码分析3.1 动画按钮主组件Component struct AnimatedButton { // 基础属性 private label: string ; // 按钮文字 private icon?: ResourceStr; // 按钮图标 private width: number 120; // 按钮宽度 private height: number 48; // 按钮高度 private borderRadius: number 24; // 圆角 private backgroundColor: ResourceColor #0A59F7; // 背景色 // 动画配置 private config: AnimationConfig { type: AnimationType.SCALE, duration: 300, curve: Curve.EaseOut, delay: 0, iterations: 1, scaleFrom: 1.0, scaleTo: 1.2, rotateFrom: 0, rotateTo: 45, opacityFrom: 1.0, opacityTo: 0.5 }; // 触发方式 private triggerMode: TriggerMode TriggerMode.CLICK; // 状态管理 State buttonState: ButtonState ButtonState.NORMAL; State isAnimating: boolean false; State isActive: boolean false; // 动画值 State scaleValue: number 1.0; State rotateValue: number 0; State opacityValue: number 1.0; // 回调 private onClick?: () void; private onStateChange?: (state: ButtonState) void; build() { Button({ type: ButtonType.Normal, stateEffect: false // 禁用默认点击效果使用自定义动画 }) { Row({ space: 8 }) { if (this.icon) { Image(this.icon) .width(20) .height(20) .fillColor(Color.White) } if (this.label) { Text(this.label) .fontSize(16) .fontColor(Color.White) .fontWeight(FontWeight.Medium) } } .justifyContent(FlexAlign.Center) .alignItems(VerticalAlign.Center) } .width(this.width) .height(this.height) .borderRadius(this.borderRadius) .backgroundColor(this.getButtonColor()) .shadow(this.getButtonShadow()) // 应用动画变换 .scale({ x: this.scaleValue, y: this.scaleValue }) .rotate({ angle: this.rotateValue }) .opacity(this.opacityValue) // 隐式动画配置 .animation({ duration: this.config.duration, curve: this.config.curve, delay: this.config.delay, iterations: this.config.iterations -1 ? Infinity : this.config.iterations }) // 事件绑定 .onClick(() { if (this.buttonState ButtonState.DISABLED) return; this.handleButtonAction(); }) .onTouch((event: TouchEvent) { if (this.buttonState ButtonState.DISABLED) return; if (event.type TouchType.Down) { this.buttonState ButtonState.PRESSED; } else if (event.type TouchType.Up || event.type TouchType.Cancel) { this.buttonState this.isActive ? ButtonState.ACTIVE : ButtonState.NORMAL; } }) .gesture( LongPressGesture({ duration: 500 }) .onAction(() { if (this.triggerMode TriggerMode.LONG_PRESS) { this.handleButtonAction(); } }) ) .enabled(this.buttonState ! ButtonState.DISABLED) } // 处理按钮操作 handleButtonAction() { if (this.isAnimating) return; this.isAnimating true; // 切换模式特殊处理 if (this.triggerMode TriggerMode.TOGGLE) { this.isActive !this.isActive; this.buttonState this.isActive ? ButtonState.ACTIVE : ButtonState.NORMAL; } // 触发动画 this.startAnimation(); // 回调 this.onClick?.(); this.onStateChange?.(this.buttonState); } }3.2 动画效果实现不同类型的动画通过修改对应的State变量实现// 启动动画 startAnimation() { switch (this.config.type) { case AnimationType.SCALE: this.playScaleAnimation(); break; case AnimationType.ROTATE: this.playRotateAnimation(); break; case AnimationType.FADE: this.playFadeAnimation(); break; case AnimationType.COMBINE: this.playCombineAnimation(); break; } } // 缩放动画 playScaleAnimation() { // 先放大到目标值 animateTo({ duration: this.config.duration / 2, curve: Curve.EaseOut, onFinish: () { // 再回弹到正常大小 animateTo({ duration: this.config.duration / 2, curve: Curve.SpringMotion, onFinish: () { this.isAnimating false; } }, () { this.scaleValue 1.0; }) } }, () { this.scaleValue this.config.scaleTo!; }) } // 旋转动画 playRotateAnimation() { animateTo({ duration: this.config.duration, curve: Curve.EaseOut, onFinish: () { // 自动回正 animateTo({ duration: this.config.duration / 2, curve: Curve.SpringMotion, onFinish: () { this.isAnimating false; } }, () { this.rotateValue 0; }) } }, () { this.rotateValue this.config.rotateTo!; }) } // 淡入淡出动画 playFadeAnimation() { animateTo({ duration: this.config.duration / 2, curve: Curve.EaseOut, onFinish: () { // 恢复透明度 animateTo({ duration: this.config.duration / 2, curve: Curve.EaseIn, onFinish: () { this.isAnimating false; } }, () { this.opacityValue 1.0; }) } }, () { this.opacityValue this.config.opacityTo!; }) } // 组合动画 playCombineAnimation() { animateTo({ duration: this.config.duration, curve: Curve.EaseOut, onFinish: () { // 回弹 animateTo({ duration: this.config.duration / 2, curve: Curve.SpringMotion, onFinish: () { this.isAnimating false; this.scaleValue 1.0; this.rotateValue 0; this.opacityValue 1.0; } }, () { this.scaleValue 1.0; this.rotateValue 0; this.opacityValue 1.0; }) } }, () { this.scaleValue this.config.scaleTo!; this.rotateValue this.config.rotateTo!; this.opacityValue this.config.opacityTo!; }) }动画设计思路每种动画都采用前进-回弹的两段式设计第一阶段前进从初始值过渡到目标值使用EaseOut曲线动作流畅自然第二阶段回弹从目标值回到初始值使用SpringMotion曲线模拟物理弹性这种设计给用户带来按钮被按下去又弹回来的物理质感比单一的线性动画更生动。3.3 自定义按钮样式根据按钮状态动态调整视觉样式// 获取按钮颜色 getButtonColor(): ResourceColor { switch (this.buttonState) { case ButtonState.NORMAL: return this.backgroundColor; case ButtonState.PRESSED: return this.darkenColor(this.backgroundColor, 0.2); case ButtonState.ACTIVE: return this.activeColor || this.backgroundColor; case ButtonState.DISABLED: return #CCCCCC; } } // 获取按钮阴影 getButtonShadow(): Shadow { if (this.buttonState ButtonState.DISABLED) { return { radius: 0, color: transparent }; } const elevation this.buttonState ButtonState.PRESSED ? 2 : 6; return { radius: elevation, color: rgba(0, 0, 0, 0.15), offsetX: 0, offsetY: elevation / 2 }; } // 颜色加深工具函数 darkenColor(color: string, factor: number): string { // 将颜色值按因子加深 const hex color.replace(#, ); const r parseInt(hex.substring(0, 2), 16); const g parseInt(hex.substring(2, 4), 16); const b parseInt(hex.substring(4, 6), 16); const newR Math.round(r * (1 - factor)); const newG Math.round(g * (1 - factor)); const newB Math.round(b * (1 - factor)); return #${newR.toString(16).padStart(2, 0)}${newG.toString(16).padStart(2, 0)}${newB.toString(16).padStart(2, 0)}; }3.4 切换模式Toggle实现切换模式下的按钮表现为开/关两种状态每次点击切换状态// 切换状态视觉反馈 toggleStateVisual() { if (this.isActive) { // 激活状态填充色 图标变化 animateTo({ duration: this.config.duration, curve: Curve.EaseOut }, () { this.buttonState ButtonState.ACTIVE; this.scaleValue 1.0; }) // 激活指示器动画可选 if (this.activeIndicator) { // 显示激活指示器 } } else { // 非激活状态恢复默认 animateTo({ duration: this.config.duration, curve: Curve.EaseOut }, () { this.buttonState ButtonState.NORMAL; this.scaleValue 1.0; }) } }3.5 使用 Builder 构建不同样式按钮Builder PrimaryButton(config: AnimationConfig) { AnimatedButton({ label: 主要按钮, width: 160, height: 52, borderRadius: 26, backgroundColor: #0A59F7, config: config, onClick: () { console.log(主要按钮被点击); } }) } Builder IconButton(icon: ResourceStr) { AnimatedButton({ icon: icon, width: 48, height: 48, borderRadius: 24, backgroundColor: #FFFFFF, config: { type: AnimationType.SCALE, scaleTo: 0.9 }, onClick: () { console.log(图标按钮被点击); } }) }四、HarmonyOS关键技术应用4.1 动画系统深度解析ArkTS 提供了三层动画能力层级API适用场景本应用使用隐式动画.animation()属性变化自动过渡按钮状态变化显式动画animateTo()复杂动画控制按钮点击动画关键帧动画keyframeTo()多阶段动画组合动画隐式动画 vs 显式动画的选择// 隐式动画适合简单的、由状态驱动的动画 Button(示例) .scale({ x: this.scaleValue, y: this.scaleValue }) .animation({ duration: 300, curve: Curve.EaseOut }) .onClick(() { this.scaleValue 1.2; // 自动触发动画 }) // 显式动画适合复杂的、多阶段的动画 Button(示例) .onClick(() { animateTo({ duration: 300, curve: Curve.EaseOut, onFinish: () { // 动画完成后执行第二阶段 animateTo({...}, () { this.scaleValue 1.0; }) } }, () { this.scaleValue 1.2; }) })4.2 动画曲线选择ArkTS 提供了丰富的动画曲线不同的曲线适用于不同的场景// 弹性曲线 - 适合按钮点击回弹 Curve.SpringMotion // 效果超过目标值再回弹模拟物理弹簧 // 缓出曲线 - 适合按钮按下 Curve.EaseOut // 效果开始时快速结束时减速 // 缓入缓出 - 适合平滑过渡 Curve.EaseInOut // 效果开始和结束都慢中间快 // 弹性曲线 - 适合强调效果 Curve.Spring // 效果多次回弹振荡 // 自定义三次贝塞尔曲线 Curve.cubicBezier(0.25, 0.1, 0.25, 1.0)4.3 手势系统集成// 组合手势点击 长按 Button() .gesture( GestureGroup(GestureMode.Exclusive, TapGesture() .onAction(() { // 单击处理 this.handleSingleTap(); }), LongPressGesture({ duration: 500 }) .onAction(() { // 长按处理 this.handleLongPress(); }) .onActionEnd(() { // 长按结束 this.handleLongPressEnd(); }) ) )GestureMode.Exclusive确保两个手势互斥避免了单击和长按的冲突。五、UI设计与交互5.1 视觉设计按钮状态视觉规范状态背景色阴影缩放透明度Normal主题色6px 阴影1.01.0Pressed加深 20%2px 阴影0.951.0Active强调色4px 阴影1.01.0Disabled灰色无阴影1.00.5尺寸规范大按钮宽度 240px高度 56px圆角 28px 中按钮宽度 160px高度 48px圆角 24px默认 小按钮宽度 100px高度 36px圆角 18px 图标按钮宽度 48px高度 48px圆角 24px5.2 交互反馈设计动画按钮的交互遵循预览 → 执行 → 确认的三段式反馈流程预览阶段悬停按钮亮度略微变化暗示可交互执行阶段点击按钮执行缩放/旋转/淡出动画提供操作反馈确认阶段动画结束按钮恢复到正常状态等待下一次操作5.3 无障碍设计// 无障碍支持 Button(提交) .accessibilityText(提交表单按钮) .accessibilityLevel(yes) .accessibilityDescription(点击后提交当前表单数据) .accessibilityRole(button) .focusable(true) .onKeyEvent((event: KeyEvent) { if (event.keyCode KeyCode.KEYCODE_ENTER) { this.handleButtonAction(); } })六、性能优化与最佳实践6.1 动画性能优化// 1. 使用 transform 代替 layout 属性动画 // ❌ 触发布局重排 .width(this.animatedWidth) .height(this.animatedHeight) // ✅ 仅触发合成 .scale({ x: this.scaleValue, y: this.scaleValue }) .rotate({ angle: this.rotateValue }) // 2. 启用硬件加速 .scale({ x: 1.2, y: 1.2 }) .renderGroup(true) // 启用渲染组提升性能 // 3. 降低动画复杂度 // 避免同时对过多属性做动画 // 建议同时动画的属性不超过 3 个 // 4. 合理设置动画时长 // 点击反馈100-200ms // 状态切换200-400ms // 强调效果400-800ms6.2 防止重复触发// 使用防抖机制防止快速点击 private lastTapTime: number 0; private readonly DEBOUNCE_INTERVAL 300; // 防抖间隔 handleButtonAction() { const now Date.now(); if (now - this.lastTapTime this.DEBOUNCE_INTERVAL) { return; // 防抖忽略此次触发 } this.lastTapTime now; // 执行实际操作 this.startAnimation(); this.onClick?.(); }6.3 组件复用与配置化// 预设按钮样式 const BUTTON_PRESETS { primary: { backgroundColor: #0A59F7, width: 160, height: 48, borderRadius: 24, config: { type: AnimationType.SCALE, duration: 300, scaleTo: 1.05 } }, danger: { backgroundColor: #FF4444, width: 160, height: 48, borderRadius: 24, config: { type: AnimationType.SHAKE, duration: 400 } }, success: { backgroundColor: #4CAF50, width: 160, height: 48, borderRadius: 24, config: { type: AnimationType.COMBINE, duration: 500, scaleTo: 1.1, rotateTo: 10 } } }; // 使用预设 Button(this.buttonPresets.primary)七、总结与扩展思路7.1 项目总结本文完整解析了基于 HarmonyOS ArkTS 框架的动画按钮组件开发覆盖以下核心技术动画系统隐式动画、显式动画、关键帧动画的综合运用状态管理多状态Normal/Pressed/Active/Disabled的管理与切换手势系统点击、长按、悬停手势的处理组件设计可配置、可复用的组件封装方案性能优化防止重复触发、合理使用动画属性7.2 扩展思路新增动画效果抖动动画Shake按钮左右快速抖动用于错误提示脉冲动画Pulse按钮持续缩放脉冲用于吸引注意力光晕动画Glow按钮边缘发光效果碎裂动画Shatter按钮碎裂后再重组波纹动画RippleMaterial Design 风格的点击波纹交互模式扩展手势按钮支持上滑、下滑等手势操作语音按钮集成语音识别语音触发点击压力按钮支持 3D Touch 压力感应设备支持时协同按钮多设备协同操作应用场景深化游戏技能按钮带冷却时间显示的动画按钮悬浮操作按钮可拖拽的 FAB 按钮进度按钮按钮本身显示操作进度情感按钮根据用户情绪显示不同动画效果7.3 设计哲学动画按钮的设计体现了反馈驱动交互的理念——用户每一次操作都获得及时、明确的视觉反馈从而建立操作与结果之间的因果认知。这种设计哲学可以扩展到整个应用的设计中按钮动画 → 页面转场 → 微交互 → 品牌体验 ↓ ↓ ↓ ↓ 即时反馈 连贯导航 情感连接 品牌认知在 HarmonyOS 生态中优秀的动画设计是提升用户体验的关键竞争力。掌握 ArkTS 动画系统将为开发者打造高品质的鸿蒙应用奠定坚实基础。项目代码已完整开源。动画按钮组件是 ArkTS 动画系统的综合实践开发者可以基于此学习框架并创造出更多富有创意的交互效果。

相关新闻

# 进度环组件开发实战:HarmonyOS ArkTS 动态环形进度条应用解析

# 进度环组件开发实战:HarmonyOS ArkTS 动态环形进度条应用解析

一、应用概述 进度环(Ring Progress)是一种以环形方式展示进度的可视化组件,相较于传统的水平进度条,进度环具有更紧凑的布局、更美观的视觉效果和更直观的百分比展示能力。本文将以 HarmonyOS ArkTS 框架为基础,详细解…

2026/7/27 4:30:09 阅读更多 →
# 卡片轮播组件开发实战:HarmonyOS ArkTS 优雅轮播效果实现解析

# 卡片轮播组件开发实战:HarmonyOS ArkTS 优雅轮播效果实现解析

一、应用概述 卡片轮播(Card Carousel)是移动应用中最常见的 UI 组件之一,广泛应用于首页 Banner、产品展示、图片画廊、推荐内容呈现等场景。一个优秀的轮播组件需要具备流畅的滑动体验、清晰的导航指示和良好的视觉反馈。本文将基于 Harmon…

2026/7/27 4:30:09 阅读更多 →
# 评分器组件开发实战:HarmonyOS ArkTS 五星评分交互应用解析

# 评分器组件开发实战:HarmonyOS ArkTS 五星评分交互应用解析

一、应用概述 评分器(Star Rating)是各类电商、内容平台、生活服务类应用中最常见的交互组件之一。用户通过点击或悬浮操作选择星级评分,直观地表达对商品、服务或内容的评价。本文将以 HarmonyOS 原生开发框架 ArkTS 为基础,详细…

2026/7/27 4:30:08 阅读更多 →

最新新闻

多模态Prompt设计:提升大模型视觉理解的关键技术

多模态Prompt设计:提升大模型视觉理解的关键技术

1. 多模态Prompt设计的核心逻辑多模态大模型(Vision-LLM)的Prompt设计本质上是在构建一套"人机协作协议"。与纯文本交互不同,视觉信息的处理需要更精确的指令框架来引导模型注意力分配和推理路径。2025年行业实践表明,优…

2026/7/27 4:41:13 阅读更多 →
k6自定义指标输出到InfluxDB/Prometheus:从ext.js到Grafana看板实战

k6自定义指标输出到InfluxDB/Prometheus:从ext.js到Grafana看板实战

1. 项目概述:为什么我们需要自定义 Metric 输出? 做性能压测,k6 是个好工具,脚本写起来快,资源消耗也低。但用久了你会发现,它自带的那些内置指标(http_req_duration, http_reqs, vus 等&#…

2026/7/27 4:41:13 阅读更多 →
AI Agent上下文窗口优化:200K为何成为黄金标准

AI Agent上下文窗口优化:200K为何成为黄金标准

1. 为什么200K上下文窗口是AI Agent的黄金分割点当我在设计第一个生产级AI Agent系统时,曾盲目追求大上下文窗口,直到某次凌晨三点的线上事故让我彻底醒悟。那次我们将上下文窗口扩展到800K tokens,结果Agent在连续运行12小时后突然开始输出完…

2026/7/27 4:41:13 阅读更多 →
【Claude Cowork录制技能技术解析】从屏幕演示到可复用Skill的Agent自动化新范式

【Claude Cowork录制技能技术解析】从屏幕演示到可复用Skill的Agent自动化新范式

文章目录Claude Cowork录制技能技术解析:从屏幕演示到可复用Skill的Agent自动化新范式一、引言二、功能全景:从演示到自动化的三步闭环2.1 操作步骤2.2 适用人群与平台2.3 典型使用场景三、Claude捕捉了什么:录制数据的五维度采集3.1 采集内容…

2026/7/27 4:41:13 阅读更多 →
AI法务Agent:合同智能审阅的技术实现与商业价值

AI法务Agent:合同智能审阅的技术实现与商业价值

1. 法务Agent的核心价值与行业痛点作为一名在AI法律交叉领域深耕多年的技术专家,我见证了太多企业因合同问题导致的惨痛教训。去年某上市公司因合同中的管辖条款漏洞,在异地诉讼中直接损失超3000万元;另一家创业公司则因竞业禁止条款不规范&a…

2026/7/27 4:41:13 阅读更多 →
Claude与Codex语音功能对比:实时对话与批量处理的技术选型指南

Claude与Codex语音功能对比:实时对话与批量处理的技术选型指南

Claude 和 Codex 作为当前热门的 AI 助手工具,在语音功能方面各有特色。这次我们直接对比两者的语音能力、使用门槛和实际效果,帮助开发者快速选择适合自己项目的方案。从技术架构来看,Claude 的语音功能更注重对话交互的自然度,支…

2026/7/27 4:40:13 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻