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

鸿蒙ArkTS动画开发全解析:从基础入门到实战精通

鸿蒙ArkTS动画开发全解析从基础入门到实战精通在鸿蒙HarmonyOS应用开发中流畅、细腻的动画是提升用户体验的核心要素。ArkTS作为鸿蒙生态的主力开发语言基于TypeScript扩展而来搭配ArkUI框架提供了一套简洁、高效的动画开发体系无需复杂的底层渲染逻辑即可实现丰富的视觉交互效果。本教程将从动画基础认知出发逐步讲解ArkTS动画的核心类型、开发流程、实操案例及性能优化技巧帮助开发者快速掌握ArkTS动画开发打造具备优质交互体验的鸿蒙应用。本教程适用于具备基础ArkTS语法和ArkUI组件开发经验的开发者全程结合实战案例拆解所有代码可直接复制到DevEco Studio中运行调试兼顾理论深度与实操性助力开发者快速上手并灵活运用各类动画效果。一、ArkTS动画核心基础认知1.1 什么是ArkTS动画ArkTS动画是基于ArkUI框架的声明式动画体系依托ArkTS的响应式状态管理和声明式UI特性通过简单的语法配置即可实现组件的位移、缩放、旋转、透明度变化等动画效果。与传统命令式动画相比ArkTS动画无需手动控制动画帧只需定义动画的起始状态、结束状态和过渡属性框架会自动完成动画的插值计算和渲染大幅降低开发成本。ArkTS动画的核心优势的在于“声明式编程”开发者只需描述“动画最终呈现的效果”而非“动画如何执行”结合ArkTS的状态管理机制如State、Link等可实现状态变化与动画效果的无缝联动让动画开发更简洁、高效同时依托ArkCompiler编译器的优化动画运行更流畅稳定。1.2 动画核心概念与依赖环境在开始开发前需先明确ArkTS动画的核心概念及环境要求避免开发过程中出现兼容性问题核心概念状态变量驱动动画的核心如State修饰的变量、动画属性如位移、缩放、旋转等、动画参数时长、曲线、循环次数等、插值器控制动画进度的变化规律环境要求DevEco Studio 4.0及以上版本支持ArkTS 4.0语法、HarmonyOS Next开发者预览版或HarmonyOS 6.0及以上真机/模拟器确保动画API兼容依赖框架ArkUI提供动画核心API、ArkTS提供状态管理和语法支持无需额外引入第三方库原生API即可满足绝大多数动画需求。补充说明ArkTS是TypeScript的超集兼容TypeScript核心语法同时扩展了声明式UI、状态管理等鸿蒙专属能力因此具备TypeScript基础的开发者可快速上手ArkTS动画开发无需从零学习新的语言体系。1.3 动画开发核心原则为确保动画流畅性和用户体验开发过程中需遵循以下3个核心原则轻量优先避免同时执行过多复杂动画优先使用原生动画API减少自定义动画的复杂计算状态联动动画效果与组件状态强绑定通过状态变量的变化触发动画避免手动控制动画生命周期性能适配根据设备性能动态调整动画参数如低性能设备缩短动画时长避免出现卡顿、掉帧现象。二、ArkTS动画核心类型及API详解ArkTS动画主要分为三大类属性动画、转场动画、组合动画各类动画适用场景不同API用法各有侧重下面逐一拆解讲解结合简单示例帮助理解。2.1 属性动画最常用属性动画是ArkTS中最基础、最常用的动画类型通过修改组件的属性值如width、height、opacity、translate等实现组件的动态变化核心API为animation()可直接作用于任意ArkUI组件。2.1.1 核心API参数animation()方法支持多个可选参数用于控制动画的细节常用参数如下重点掌握前5个参数名类型默认值说明durationnumber1000动画时长单位毫秒控制动画执行的快慢temponumber1动画播放速度值越大速度越快与duration配合使用curveCurveCurve.EaseInOut动画曲线控制动画进度的变化规律如加速、减速、匀速delaynumber0动画延迟执行时间单位毫秒iterationsnumber1动画播放次数-1表示无限循环playModePlayModePlayMode.Normal播放模式如Normal正常循环、Alternate正向反向交替onFinish() voidnull动画结束后的回调函数iterations为-1时不触发2.1.2 常用动画曲线Curve动画曲线决定了动画的“运动质感”不同场景适合不同的曲线常用曲线如下Curve.Linear匀速运动适用于匀速位移、匀速缩放等场景Curve.EaseIn加速运动适用于物体下落、弹出等场景Curve.EaseOut减速运动适用于物体上升、收起等场景Curve.EaseInOut先加速后减速适用于大多数基础动画如按钮点击、组件浮现Curve.FastOutLinearIn快速加速后匀速适用于向上运动的减速效果Curve.LinearOutSlowIn匀速后快速减速适用于下落运动的加速效果。2.1.3 基础示例按钮点击缩放动画下面通过一个简单示例演示属性动画的基本用法点击按钮时按钮实现缩放效果松开后恢复原状结合State状态变量驱动动画。// 导入必要的ArkUI组件 import { Button, Column, Text, State } from ohos/ui; Component struct ScaleAnimationDemo { // 定义状态变量控制按钮缩放比例初始值为1原始大小 State scale: number 1; build() { Column({ space: 20, alignItems: center, justifyContent: center }) { // 按钮组件添加缩放动画 Button(点击触发缩放动画) .width(200) .height(60) .fontSize(16) // 绑定缩放属性scale为状态变量 .scale({ x: this.scale, y: this.scale }) // 配置动画参数 .animation({ duration: 300, // 动画时长300毫秒 curve: Curve.EaseInOut, // 先加速后减速 iterations: 1, // 播放1次 onFinish: () { // 动画结束后将缩放比例恢复为1 this.scale 1; } }) // 点击事件触发动画修改状态变量 .onClick(() { this.scale 0.9; // 点击时缩小到0.9倍 }) Text(点击按钮查看动画效果) .fontSize(14) .color(#666666) } .width(100%) .height(100%) } } // 入口组件 Entry Component struct AnimationTutorial { build() { ScaleAnimationDemo(); } }代码解析通过State修饰的scale变量控制按钮的缩放比例点击按钮时修改scale的值为0.9由于scale绑定了按钮的scale属性且配置了animation()方法框架会自动执行“从1到0.9”的缩放动画动画结束后通过onFinish回调将scale恢复为1实现“点击缩小、松开恢复”的效果。2.2 转场动画转场动画主要用于组件的“出现”和“消失”场景如页面跳转、弹窗显示/隐藏核心API为transition()可设置组件进入、退出时的动画效果常用场景包括页面切换、弹窗弹出、列表项添加/删除等。2.2.1 核心API参数transition()方法的核心参数为TransitionOptions常用配置如下type转场类型可选值为TransitionType.Insert进入、TransitionType.Delete退出、TransitionType.All进入退出opacity透明度变化如{ opacity: 0 }表示从透明变为不透明translate位移变化如{ x: 100 }表示从x轴100px位置移动到当前位置scale缩放变化如{ x: 0, y: 0 }表示从缩小到0变为原始大小rotate旋转变化如{ angle: 90 }表示从旋转90度变为0度duration、curve、delay与属性动画的参数用法一致控制转场动画的细节。2.2.2 基础示例弹窗显示/隐藏转场动画下面实现一个弹窗组件显示时从底部滑入并淡入隐藏时从底部滑出并淡出结合State变量控制弹窗的显示状态。import { Button, Column, Text, State, Row, Modal, TransitionType } from ohos/ui; Component struct TransitionAnimationDemo { // 控制弹窗显示/隐藏的状态变量 State isShow: boolean false; build() { Column({ space: 20, alignItems: center, justifyContent: center }) { Button(显示弹窗) .width(200) .height(60) .onClick(() { this.isShow true; // 显示弹窗 }) // 弹窗组件添加转场动画 if (this.isShow) { Column({ space: 15, alignItems: center, justifyContent: center }) .width(80%) .height(200) .backgroundColor(#ffffff) .borderRadius(12) .shadow({ radius: 10, color: #00000020 }) // 转场动画配置进入和退出时的效果 .transition({ type: TransitionType.All, // 同时配置进入和退出动画 translate: { y: 100 }, // 位移从底部100px位置进入/退出 opacity: 0, // 透明度从透明变为不透明进入从不透明变为透明退出 duration: 300, curve: Curve.EaseInOut }) .animation() // 启用转场动画必须添加否则转场不生效 .onClick(() { this.isShow false; // 点击弹窗隐藏 }) { Text(弹窗标题) .fontSize(18) .fontWeight(bold) Text(这是一个带转场动画的弹窗) .fontSize(14) .color(#666666) } } } .width(100%) .height(100%) .backgroundColor(#f5f5f5) } } Entry Component struct AnimationTutorial { build() { TransitionAnimationDemo(); } }代码解析通过if条件判断控制弹窗的显示/隐藏当isShow从false变为true时弹窗执行“从底部100px、透明”到“当前位置、不透明”的进入动画当isShow从true变为false时执行相反的退出动画。注意转场动画必须配合animation()方法启用否则无法生效。2.3 组合动画组合动画是将多个属性动画、转场动画结合起来实现更复杂的动画效果如“位移旋转缩放”同时进行。ArkTS中实现组合动画有两种方式一是给同一个组件绑定多个动画属性二是使用animateTo()方法包裹多个状态变量的修改实现多属性同步动画。2.3.1 核心方法animateTo()animateTo()是实现组合动画的核心方法可包裹多个状态变量的修改框架会自动将所有状态变化对应的动画同步执行语法如下animateTo({ duration: 500, curve: Curve.EaseInOut }, () { // 此处修改多个状态变量对应的动画会同步执行 this.x 100; this.y 100; this.scale 1.2; this.opacity 0.8; })2.3.2 实战示例跳动的爱心动画多属性组合下面实现一个经典的组合动画案例跳动并旋转的爱心结合Canvas绘制爱心搭配位移、旋转、缩放动画还原真实的跳动效果同时添加影子动画增强立体感。import { Component, State, Canvas, CanvasGradient, Curve, PlayMode } from ohos/ui; // 自定义爱心组件 Component struct HeartComponent { // 爱心位置、大小、旋转角度状态变量 State top: number 200; State size: number 100; State rotateAngle: number 0; // 影子大小状态变量配合爱心跳动 State shadowSize: number 30; build() { Column({ alignItems: center }) { // 影子组件跟随爱心跳动变化大小和透明度 Column() .width(this.shadowSize) .height(10) .backgroundColor(#00000020) .borderRadius(5) .blur(5) // 模糊效果增强影子真实感 .animation({ duration: 800, curve: Curve.Linear, iterations: -1, playMode: PlayMode.Alternate }) // Canvas绘制爱心 Canvas() .width(this.size) .height(this.size) .top(this.top) .rotate({ angle: this.rotateAngle }) .animation({ duration: 800, curve: this.top 200 ? Curve.FastOutLinearIn : Curve.LinearOutSlowIn, iterations: -1, playMode: PlayMode.Alternate, onFinish: () { // 每次动画结束旋转角度增加90度 this.rotateAngle 90; } }) .onDraw((context) { // 初始化画布 context.clearRect(0, 0, this.size, this.size); // 创建线性渐变让爱心更立体 const gradient: CanvasGradient context.createLinearGradient(0, 0, this.size, this.size); gradient.addColorStop(0, #ff4d6d); // 渐变起始色 gradient.addColorStop(1, #ff758f); // 渐变结束色 context.fillStyle gradient; // 绘制爱心两条贝塞尔曲线组成 context.beginPath(); context.moveTo(this.size / 2, this.size / 4); // 左侧贝塞尔曲线 context.bezierCurveTo( 0, 0, 0, this.size / 2, this.size / 2, this.size * 3 / 4 ); // 右侧贝塞尔曲线 context.bezierCurveTo( this.size, this.size / 2, this.size, 0, this.size / 2, this.size / 4 ); context.closePath(); context.fill(); // 填充爱心 }) } .width(100%) .height(100%) .onAppear(() { // 组件渲染完成后启动跳动动画 setInterval(() { if (this.top 200) { this.top 150; this.size 110; this.shadowSize 20; } else { this.top 200; this.size 100; this.shadowSize 30; } }, 800); }) } } // 入口组件 Entry Component struct HeartAnimationDemo { build() { Column({ alignItems: center, justifyContent: center }) { HeartComponent(); Text(跳动的爱心动画组合动画示例) .fontSize(16) .marginTop(20) } .width(100%) .height(100%) .backgroundColor(#fafafa) } }代码解析该案例结合了多个动画效果属于典型的组合动画① 爱心的位移动画top从200到150模拟跳动效果② 缩放动画size从100到110增强跳动的立体感③ 旋转动画rotateAngle每次增加90度让爱心旋转④ 影子动画shadowSize跟随爱心跳动变化提升真实感。同时通过Canvas绘制爱心并添加线性渐变让爱心更美观动画曲线根据跳动方向调整上升减速、下落加速还原真实的重力效果。三、ArkTS动画实战进阶复杂场景应用掌握基础动画后下面结合两个高频实战场景讲解ArkTS动画的进阶用法涵盖列表动画、页面切换动画帮助开发者应对实际开发中的复杂需求。3.1 场景一列表项添加/删除动画在鸿蒙应用中列表是常用组件给列表项添加“添加/删除”转场动画可提升用户交互体验。下面实现一个可添加、删除项的列表列表项添加时淡入上移删除时淡出下移。import { Component, State, List, ListItem, Button, Text, Input, TransitionType, Curve } from ohos/ui; Component struct ListAnimationDemo { // 列表数据 State listData: string[] [列表项1, 列表项2, 列表项3]; // 输入框内容 State inputValue: string ; build() { Column({ space: 20 }) { // 输入框和添加按钮 Row({ space: 10, alignItems: center }) { Input({ value: this.inputValue, placeholder: 请输入列表项 }) .width(70%) .height(50) .onChange((value) { this.inputValue value; }) Button(添加) .width(20%) .height(50) .onClick(() { if (this.inputValue) { // 添加列表项插入到第一个位置 this.listData.unshift(this.inputValue); this.inputValue ; } }) } .padding(20) // 列表组件添加列表项转场动画 List({ space: 10 }) { ForEach(this.listData, (item, index) { ListItem() { Row({ space: 10, alignItems: center, justifyContent: space-between }) .width(100%) .height(60) .backgroundColor(#ffffff) .padding(20) .borderRadius(8) // 列表项转场动画 .transition({ type: TransitionType.All, opacity: 0, translate: { y: 20 }, // 从下方20px位置进入/退出 duration: 300, curve: Curve.EaseInOut }) .animation() { Text(item) .fontSize(16) Button(删除) .width(80) .height(40) .backgroundColor(#ff4d4f) .color(#ffffff) .onClick(() { // 删除当前列表项 this.listData.splice(index, 1); }) } } }) } .width(100%) .flexGrow(1) .padding(20) } .width(100%) .height(100%) .backgroundColor(#f5f5f5) } } Entry Component struct AnimationTutorial { build() { ListAnimationDemo(); } }代码解析通过ForEach循环渲染列表项给每个列表项添加转场动画当列表项被添加unshift时执行“透明、下方20px”到“不透明、当前位置”的进入动画当列表项被删除splice时执行相反的退出动画。同时结合输入框和按钮实现列表项的添加和删除动画与数据状态无缝联动交互流畅自然。3.2 场景二页面切换动画页面切换是鸿蒙应用的常见场景默认页面切换无动画通过转场动画可提升页面切换的流畅性和视觉体验。下面实现两个页面切换时实现“左滑进入、右滑退出”的动画效果。import { Component, State, Navigator, Page, Text, Button, TransitionType, Curve } from ohos/ui; // 页面1 Component struct Page1 { build() { Page() { Column({ alignItems: center, justifyContent: center, space: 20 }) .width(100%) .height(100%) .backgroundColor(#e6f7ff) { Text(页面1) .fontSize(24) .fontWeight(bold) // 跳转到页面2 Navigator({ target: Page2, type: push }) { Button(跳转到页面2) .width(200) .height(60) .backgroundColor(#1890ff) .color(#ffffff) } // 页面切换转场动画退出时右滑 .transition({ type: TransitionType.Delete, translate: { x: -300 }, opacity: 0, duration: 300, curve: Curve.EaseInOut }) } } } } // 页面2 Component struct Page2 { build() { Page() { Column({ alignItems: center, justifyContent: center, space: 20 }) .width(100%) .height(100%) .backgroundColor(#fff7e6) { Text(页面2) .fontSize(24) .fontWeight(bold) // 返回到页面1 Navigator({ target: Page1, type: pop }) { Button(返回页面1) .width(200) .height(60) .backgroundColor(#faad14) .color(#ffffff) } // 页面切换转场动画进入时左滑 .transition({ type: TransitionType.Insert, translate: { x: 300 }, opacity: 0, duration: 300, curve: Curve.EaseInOut }) } } } } // 入口组件 Entry Component struct PageTransitionDemo { build() { Page1(); } }代码解析通过Navigator组件实现页面跳转给两个页面分别添加转场动画页面1退出时跳转到页面2执行“向左位移300px透明”的退出动画页面2进入时执行“从右侧300px位置向左移动透明变不透明”的进入动画返回时则执行相反的动画实现类似原生应用的页面切换效果。四、ArkTS动画性能优化技巧动画的流畅性直接影响用户体验尤其是在复杂场景如多动画同时执行、列表滚动时的动画中需做好性能优化避免出现卡顿、掉帧现象。结合鸿蒙ArkUI的渲染机制总结以下4个核心优化技巧4.1 优先使用硬件加速属性ArkUI框架对部分动画属性支持硬件加速优先使用这些属性可提升动画流畅度避免使用CPU密集型属性推荐使用translate位移、scale缩放、rotate旋转、opacity透明度这些属性可通过GPU加速渲染性能消耗低避免使用width、height、margin、padding等布局相关属性这些属性会触发组件重新布局layoutCPU消耗高容易导致卡顿。4.2 合理控制动画时长和帧率动画时长过长会导致用户等待过短则会让用户感觉突兀同时需控制帧率避免不必要的性能消耗基础动画如按钮点击、组件浮现时长控制在200-300ms兼顾流畅性和体验复杂组合动画如页面切换、弹窗时长控制在300-500ms避免过长导致卡顿避免过高帧率鸿蒙应用默认动画帧率为60fps无需手动设置过高帧率会增加GPU负担反而导致掉帧。4.3 避免过度动画和无效动画过度使用动画会分散用户注意力同时增加性能消耗需遵循“必要才用”的原则避免给无关组件添加动画只给用户交互相关的组件如按钮、弹窗、列表项添加动画避免同时执行多个复杂动画如同时执行5个以上组合动画会导致GPU负载过高出现掉帧组件不可见时停止动画如页面切换后隐藏页面的动画需停止避免无效的性能消耗。4.4 利用缓存和懒加载优化对于列表动画、动态加载的组件动画可通过缓存和懒加载减少渲染压力列表动画使用LazyForEach替代ForEach实现列表项懒加载避免一次性渲染所有列表项同时配合cachedCount设置缓存数量减少频繁渲染组件缓存对于频繁切换显示/隐藏的组件可使用Reusable装饰器实现组件复用避免每次显示时重新创建组件减少渲染成本。五、常见问题与解决方案在ArkTS动画开发过程中开发者常会遇到一些问题下面总结4个高频问题及解决方案帮助快速排查问题问题1动画不生效原因及解决方案未使用状态变量驱动动画动画必须通过State、Link等状态变量的变化触发直接修改组件属性不会触发动画转场动画未添加animation()方法转场动画需配合animation()方法启用否则无法生效动画参数设置错误如duration设为0、iterations设为0或curve设置错误需检查动画参数配置。问题2动画卡顿、掉帧原因及解决方案使用了CPU密集型属性替换为translate、scale等硬件加速属性同时执行过多动画减少动画数量避免复杂组合动画同时执行设备性能不足针对低性能设备动态缩短动画时长、简化动画效果。问题3动画结束后组件状态异常原因及解决方案未在onFinish回调中恢复状态如缩放动画结束后未将scale恢复为原始值需在onFinish中重置状态变量动画参数设置错误如playMode设为Alternate导致动画结束后状态异常需根据需求调整playMode。问题4多动画不同步原因及解决方案未使用animateTo()方法多个状态变量的修改需包裹在animateTo()中确保动画同步执行动画参数不一致多个动画的duration、curve需设置一致否则会出现不同步现象。六、总结与拓展本教程全面讲解了ArkTS动画的核心知识从基础属性动画、转场动画到组合动画结合多个实战案例覆盖了鸿蒙应用开发中常见的动画场景同时分享了性能优化技巧和常见问题解决方案帮助开发者快速上手ArkTS动画开发。ArkTS动画的核心是“声明式状态联动”无需关注底层渲染细节只需通过状态变量的变化驱动动画即可实现丰富的视觉效果。随着HarmonyOS的不断升级ArkTS动画API也在持续完善新增了更多复杂动画能力如3D动画、路径动画开发者可在掌握基础动画后进一步学习鸿蒙官方文档探索更多高级动画用法。建议开发者多动手实操结合实际项目需求灵活运用各类动画效果在提升应用交互体验的同时兼顾动画性能打造出更优质的鸿蒙应用。

相关文章:

鸿蒙ArkTS动画开发全解析:从基础入门到实战精通

鸿蒙ArkTS动画开发全解析:从基础入门到实战精通在鸿蒙HarmonyOS应用开发中,流畅、细腻的动画是提升用户体验的核心要素。ArkTS作为鸿蒙生态的主力开发语言,基于TypeScript扩展而来,搭配ArkUI框架提供了一套简洁、高效的动画开发体…...

让QQ机器人帮你干活:基于NoneBot2和go-cqhttp的自动化测试与消息处理实战

基于NoneBot2与go-cqhttp打造智能QQ机器人:从消息处理到自动化工作流 在完成NoneBot2与go-cqhttp的基础配置后,许多开发者会面临一个关键问题:如何让机器人从简单的"复读机"进化为真正提升效率的智能助手?本文将深入探讨…...

保姆级教程:用Python+WRF+Cartopy绘制气象雷达回波图(附完整代码)

Python气象可视化实战:从WRF数据到专业雷达回波图 当台风路径预报需要验证强对流区域,或是暴雨分析要定位最大回波核心时,一张清晰的雷达反射率图往往比千言万语更有说服力。作为气象领域的"CT扫描",雷达回波图能直观展…...

3个月速成模型大师!2026年大模型进阶秘籍,薪资直接翻倍!

假如你从2026年开始学大模型,按这个步骤走准能稳步进阶。 接下来告诉你一条最快的邪修路线, 3个月即可成为模型大师,薪资直接起飞。阶段1:大模型基础阶段2:RAG应用开发工程阶段3:大模型Agent应用架构阶段4:大模型微调与私有化部署学习资源&am…...

2026科技风向标:大模型、Agent、具身智能,谁将引领AI新纪元?

2026 年,谁的主场? 作为顶流的 OpenAI,在 2025 年经历了阵痛与转型。一方面,其维持着通用大模型能力的上限位置,其模型在推理、代码、多模态等多个维度持续作为行业对标对象;另一方面,GPT-5 的…...

基于熵分析与强化学习的RTL代码生成技术解析

1. 项目概述在数字电路设计领域,寄存器传输级(RTL)代码是连接高层次设计意图与可综合逻辑的关键桥梁。传统RTL编写需要工程师具备深厚的硬件描述语言(如Verilog)功底和时序逻辑设计经验,这导致硬件设计存在…...

mov指令的高低位处理规则

核心主旨与关键规则文档的核心在于阐明一个基本规则:大多数 mov 指令只更新其操作数大小指定的字节,唯一的例外是当 movl(32位移动)以寄存器为目的时,它会将该寄存器的高32位清零**。**这个规则源于 x86-64的编程惯例&…...

从抓包分析看BLE ATT协议:手把手教你用nRF Sniffer解读空中交互的PDU

从抓包分析看BLE ATT协议:手把手教你用nRF Sniffer解读空中交互的PDU 蓝牙低功耗(BLE)技术已成为物联网设备通信的核心支柱,而属性协议(ATT)作为其数据交互的基础层,直接决定了设备间如何高效可…...

3步解锁音乐自由:qmc-decoder帮你将QQ音乐专有格式转换为MP3/FLAC

3步解锁音乐自由:qmc-decoder帮你将QQ音乐专有格式转换为MP3/FLAC 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否遇到过这样的困扰:从QQ音乐…...

3个技巧轻松搞定代码复杂度分析:Lizard助你写出高质量代码

3个技巧轻松搞定代码复杂度分析:Lizard助你写出高质量代码 【免费下载链接】lizard A simple code complexity analyser without caring about the C/C header files or Java imports, supports most of the popular languages. 项目地址: https://gitcode.com/gh…...

JetBrains IDE试用期重置终极指南:简单三步无限续杯

JetBrains IDE试用期重置终极指南:简单三步无限续杯 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗?IDE Eval Resetter是解决这个问题的完美工具&a…...

LangChain之大模型介绍

一、认识模型模型是一个从数据中学习规律的“数学函数”或“程序”。旨在处理和生成信息的算法,通常模仿人 类的认知功能。通过从大型数据集中学习模式和洞察,这些模型可以进行预测、生成文本、图像或其 他输出,从而增强各个行业的各种应用。…...

SAP AVC实战:从MTO订单到交付的可配置物料全链路解析

1. 可配置物料的前世今生:从LO-VC到AVC的进化之路 第一次接触可配置物料是在2015年,当时客户需要定制一批液压系统,每个订单的参数都不同。传统做法是给每个变体创建独立物料号,结果一个月下来物料主数据暴涨300%,MRP跑…...

echarts 折柱混合图,渐变切图例和x轴滚动可自动切换

echarts 折柱混合图,渐变切图例和x轴滚动可自动切换,并且自定义图例,一般使用在大屏项目上,效果如图getSZCharts(val) {this.mySZFXChart this.$echarts.init(document.getElementById("isSZCharts"));let bardata1 [6, 6, 5, 3, 8];let bardata2 [8, 8, 8, 6, 7]…...

从‘饱和’与‘残存失调’聊起:手把手分析OOS与IOS两种失调消除技术该怎么选

从‘饱和’与‘残存失调’谈OOS与IOS技术选型:工程师的决策指南 在高速高精度比较器设计中,失调消除技术的选择往往成为影响整体性能的关键决策点。当您面对一个增益设计较高的前置放大器时,输出饱和风险与残余失调容忍度之间的矛盾会变得尤为…...

Pearcleaner:为你的Mac来一次彻底的数字大扫除

Pearcleaner:为你的Mac来一次彻底的数字大扫除 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经疑惑过,为什么删除了一个应…...

如何批量清理文件名数字前缀?3个方法一键批量清理文件名数字前缀

一、为什么文件名要删数字?先聊聊这些数字编号的"坑":比如项目结束后整理资料,"3.最终版PPT"和"5.最终版PPT"混在一起,发邮件时领导可能收到错版本;或者客户突然要旧资料,按…...

文档插件《道斯通图》不震撼首发 免费下载直接使用

最后有下载地址,免费下载,安装后直接使用。(限时7天)后续会在视频平台发布详细的操作视频教程,以下操作流程仅供参考。你是否还在为 Word 文档处理繁琐操作头疼?批量合并、格式转换、排版统一、内容替换、图…...

基于单片机的超声波避障小车(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T1932310M设计简介:本设计是基于单片机的超声波避障小车,主要实现以下功能:通过温度传感器检测温度 通过超声波模块检测…...

办公族必看!5个亲测有效的PPT压缩方法,轻松减小文件大小提升效率

在数字化办公场景中,PPT文件体积过大已成为职场人普遍面临的难题。无论是邮件发送时被系统拦截、在线平台上传超时,还是会议演示时因文件臃肿导致设备卡顿,都会严重影响工作效率。本文基于大量职场用户实测数据,系统拆解五种不同场…...

【实战】工程造价从业者如何快速搭建AI辅助系统(附DMXAPI接入指南)

一、前言 本文面向有一定技术基础、想快速在内部系统接入AI能力的开发者。通过一个真实项目案例,讲解如何借助DMXAPI实现多模型统一调用,同时控制开发成本。二、需求背景 维度 具体需求 业务场景 工程造价智能辅助系统 核心功能 历史清单智能分…...

YOLOv26蜜蜂识别检测系统:8080张图像+PyQt5界面+模型权重+远程部署(含训练曲线/混淆矩阵)

摘要 本文基于YOLO26目标检测算法构建了一套蜜蜂识别检测系统,用于自动识别图像中的蜜蜂目标。数据集共包含8,080张标注图像(训练集5,640张、验证集1,604张、测试集836张),类别仅为bees。实验结果表明,模型在验证集上的…...

Windows开发环境配置

1、安装JDK 1.1、jdk 8 D:\software\Java\jdk1.8.0_2021.2、jdk 17 D:\software\Java\jdk-171.3、jdk 25 D:\software\Java\jdk-251.4、配置环境变量 JAVA8_HOMED:\software\Java\jdk1.8.0_202 JAVA25_HOMED:\software\Java\jdk-25 JAVA_HOME%JAVA8_HOME%1.5、配置Path2、安装M…...

用魔法打败魔法:AI代码提示词验证流程

三步走:第一步:让AI根据我的要求给我写提示词和精简提示词;第二步:把AI提供的提示词写到AI中,让AI生成代码;第三步:把AI写的代码问AI是否可以编译和运行通过。循环三步,得到较好的提…...

城通网盘加速终极指南:3步免费突破下载限制,速度提升10倍!

城通网盘加速终极指南:3步免费突破下载限制,速度提升10倍! 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘的龟速下载而烦恼吗?ctfileGet是…...

别再手动抄坐标了!用Python一键提取UG模型边界点(附完整代码)

用Python自动化提取UG模型边界坐标的工程实践 在逆向工程、3D打印预处理和CAE分析中,工程师经常需要从三维模型中提取大量边界点坐标。传统手动记录或界面导出方式不仅耗时耗力,还容易引入人为错误。本文将分享一套基于Python的自动化解决方案&#xff0…...

告别屏幕撕裂和亮度不均:手把手教你用ILI9341的B组命令优化显示效果

告别屏幕撕裂和亮度不均:手把手教你用ILI9341的B组命令优化显示效果 在嵌入式显示项目中,ILI9341驱动芯片凭借其出色的色彩表现和灵活的接口配置,成为中小尺寸TFT-LCD的首选方案。但许多开发者在完成基础驱动后,常会遇到屏幕撕裂、…...

从停机到秒级自愈:Docker 27健康探测+设备数字孪生联动实践——某汽车焊装线72小时零非计划停机实录

第一章:从停机到秒级自愈:Docker 27健康探测设备数字孪生联动实践——某汽车焊装线72小时零非计划停机实录在某主机厂焊装车间,传统PLC控制的机器人焊接工位曾因通信抖动、IO模块异常或冷却液压力突降导致平均每月3.2次非计划停机。项目团队将…...

别再乱接线了!STM32F407ZGT6连接ST-LINK与USB转TTL的保姆级图文指南(附舵机驱动)

STM32F407ZGT6开发板极简接线手册:从ST-LINK调试到舵机控制的避坑指南 刚拿到STM32开发板的新手们,往往会被密密麻麻的引脚和五花八门的连接线搞得晕头转向。我见过太多人因为接错一根线而浪费数小时排查——电源接反烧坏芯片、调试接口混乱导致无法下载…...

长芯微LMD9633完全P2P替代AD9633,四通道12位采样80/105/125MSPS 模数转换器ADC

描述长芯微LMD9633是一款四通道、12位、80/105/125MSPS 模数转换器(ADC),具有片内采样保持电路,旨在实现低成本、低功耗、小尺寸和易用性。该产品以高达 125 MSPS 的转换速率运行,并针对要求小封装尺寸至关重要的应用进…...