news 2026/5/9 14:55:30

HarmonyOS 6 ArkUI 粒子动画(Particle)使用文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS 6 ArkUI 粒子动画(Particle)使用文档

文章目录

    • Particle 粒子动画核心
      • 1. 组件作用
      • 2. 核心适用场景
      • 3. 官方标准核心结构
    • 示例代码逐模块解析
      • 1 页面布局结构
      • 2 粒子发射器配置(emitter)
        • 对应功能:
      • 3 颜色动画配置(color)
        • 对应功能:
      • 4 透明度动画配置(opacity)
        • 对应功能:
      • 5 缩放动画配置(scale)
        • 对应功能:
      • 6 加速度配置(acceleration)
        • 对应功能:
    • 运行效果
    • 完整代码
    • 总结

Particle 粒子动画核心

1. 组件作用

Particle是 ArkUI 提供的高性能粒子动画组件,用于快速实现复杂的粒子特效。通过配置发射器、粒子数量、生命周期、颜色、透明度、缩放、速度、加速度等参数,实现高度自定义的视觉效果。

2. 核心适用场景

  • 烟花、火焰、烟雾、爆炸特效
  • APP 启动页背景动效
  • 点赞、金币飘落等交互动效
  • 自定义加载动画

3. 官方标准核心结构

Particle({particles:[ParticleDescription]})
  • particles: 粒子描述数组,支持多组粒子效果
  • 内部包含emitter(发射器)、color(颜色)、opacity(透明度)、scale(缩放)、acceleration(加速度)等模块

示例代码逐模块解析

1 页面布局结构

Stack(){Text().width(300).height(300).backgroundColor(Color.Black)// 黑色背景Particle({...}).width(300).height(300)// 粒子容器}.width('100%').height('100%').align(Alignment.Center)
  • 使用Stack容器居中展示粒子效果
  • 黑色背景提升粒子视觉对比度
  • 粒子区域固定为300x300

2 粒子发射器配置(emitter)

emitter:{particle:{type:ParticleType.POINT,// 粒子类型:圆点config:{radius:10},// 圆点半径count:500,// 最大粒子总数lifetime:10000,// 生命周期 10 秒lifetimeRange:100// 生命周期随机范围},emitRate:10,// 每秒发射 10 个粒子position:[0,0],// 发射器位置shape:ParticleEmitterShape.RECTANGLE// 发射器形状:矩形}
对应功能:
  1. 粒子类型POINT圆点粒子
  2. 数量控制:最多同时存在 500 个粒子
  3. 发射速度:每秒生成 10 个新粒子
  4. 生命周期:单个粒子存活 10 秒
  5. 发射区域:矩形区域发射

3 颜色动画配置(color)

color:{range:[Color.Red,Color.Yellow],// 初始颜色范围distributionType:DistributionType.GAUSSIAN,// 高斯分布updater:{type:ParticleUpdater.CURVE,// 曲线渐变config:[{from:White,to:Pink,0-3000ms},{from:Pink,to:Orange,3000-5000ms},{from:Orange,to:Pink,5000-8000ms}]}}
对应功能:
  • 粒子初始颜色在红 → 黄之间随机
  • 按时间轴三段式渐变:白 → 粉 → 橙 → 粉
  • 使用曲线动画实现平滑过渡

4 透明度动画配置(opacity)

opacity:{range:[0.0,1.0],// 初始透明度随机updater:{type:ParticleUpdater.CURVE,config:[{from:0.01.0,0-3000ms},// 淡入{from:1.00.0,5000-10000ms}// 淡出]}}
对应功能:
  • 粒子先淡入、后淡出
  • 符合自然视觉动效

5 缩放动画配置(scale)

scale:{range:[0.0,0.0],updater:{type:ParticleUpdater.CURVE,config:[{from:0.00.5,0-3000ms}// 从小到大放大]}}
对应功能:
  • 粒子从无到有逐渐放大
  • 增强视觉冲击感

6 加速度配置(acceleration)

acceleration:{speed:{range:[3,9],updater:{type:ParticleUpdater.RANDOM,config:[1,20]}},angle:{range:[90,90]}// 固定向上运动}
对应功能:
  • 粒子固定向上(90°)加速漂浮
  • 速度随机变化,模拟自然飘动效果

运行效果

  1. 黑色背景上生成红色/黄色圆点粒子
  2. 粒子从无到有淡入、逐渐放大
  3. 颜色按时间渐变:白 → 粉 → 橙 → 粉
  4. 粒子向上加速漂浮
  5. 后期逐渐淡出消失
  6. 持续发射、无限循环动效

完整代码

@Entry@Componentstruct ParticleExample{build(){Stack(){Text().width(300).height(300).backgroundColor(Color.Black)Particle({particles:[{emitter:{particle:{type:ParticleType.POINT,// 粒子类型config:{radius:10// 圆点半径},count:500,// 粒子总数lifetime:10000,// 粒子生命周期,单位mslifetimeRange:100// 粒子生命周期取值范围,单位ms},emitRate:10,// 每秒发射粒子数position:[0,0],shape:ParticleEmitterShape.RECTANGLE// 发射器形状},color:{range:[Color.Red,Color.Yellow],// 初始颜色范围distributionType:DistributionType.GAUSSIAN,// 初始颜色随机值分布updater:{type:ParticleUpdater.CURVE,// 变化方式为曲线变化config:[{from:Color.White,// 变化起始值to:Color.Pink,// 变化终点值startMillis:0,// 开始时间endMillis:3000,// 结束时间curve:Curve.EaseIn// 变化曲线},{from:Color.Pink,to:Color.Orange,startMillis:3000,endMillis:5000,curve:Curve.EaseIn},{from:Color.Orange,to:Color.Pink,startMillis:5000,endMillis:8000,curve:Curve.EaseIn},]}},opacity:{range:[0.0,1.0],// 粒子透明度的初始值从【0.0到1.0】随机产生updater:{type:ParticleUpdater.CURVE,config:[{from:0.0,to:1.0,startMillis:0,endMillis:3000,curve:Curve.EaseIn},{from:1.0,to:0.0,startMillis:5000,endMillis:10000,curve:Curve.EaseIn}]}},scale:{range:[0.0,0.0],updater:{type:ParticleUpdater.CURVE,config:[{from:0.0,to:0.5,startMillis:0,endMillis:3000,curve:Curve.EaseIn}]}},acceleration:{// 加速度的配置,从大小和方向两个维度变化,speed表示加速度大小,angle表示加速度方向speed:{range:[3,9],updater:{type:ParticleUpdater.RANDOM,// Speed的变化方式是随机变化config:[1,20]}},angle:{range:[90,90]}}}]}).width(300).height(300)}.width('100%').height('100%').align(Alignment.Center)}}

运行效果如图:


总结

  1. Particle 必须设置宽高
    不设置宽高会导致粒子无法显示

  2. 粒子数量合理设置
    count过大会导致性能下降

  3. updater 配置顺序
    按时间先后顺序排列,实现连续动画

  4. 加速度方向
    angle: 90表示垂直向上

  5. 性能优化
    背景建议使用纯色,提升渲染效率

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 14:54:31

别再傻傻改代码了!用正点原子USMART组件,串口直接调函数真香

嵌入式开发效率革命:USMART串口调试组件实战指南 在嵌入式开发领域,调试效率往往决定了项目成败。想象一下这样的场景:当你需要调整LCD显示参数时,每次微调都要经历"修改代码→编译→下载→观察效果"的循环,…

作者头像 李华
网站建设 2026/5/9 14:52:31

cann/cann-recipes-infer DeepSeek-R1推理优化

DeepSeek-R1或Kimi-K2模型在NPU实现高性能推理 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 概述 DeepSeek-R1和Kim…

作者头像 李华
网站建设 2026/5/9 14:49:11

CANN/hccl框架集成指南

主流框架集成 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann/hccl …

作者头像 李华
网站建设 2026/5/9 14:49:01

Java基础十六:枚举,包,反射

一、枚举(Enum) 1. 什么是枚举 枚举是一种特殊的类,用于定义一组固定的常量。 2. 基本用法 // 最简单的枚举 public enum Season {SPRING, SUMMER, AUTUMN, WINTER }// 使用枚举 public class TestEnum {public static void main(String[…

作者头像 李华
网站建设 2026/5/9 14:48:32

Claude Code用户如何配置Taotoken解决访问不稳定与额度不足问题

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code用户如何配置Taotoken解决访问不稳定与额度不足问题 应用场景类,针对频繁使用Claude Code进行编程辅助但受…

作者头像 李华
网站建设 2026/5/9 14:44:12

AI赋能机器人柔顺控制:从经典阻抗到强化学习实战

1. 项目概述:当机器人学会“以柔克刚” 在工业机器人领域,让机械臂像人手一样灵巧地完成装配、打磨、抛光等需要与环境发生物理接触的任务,一直是个核心挑战。想象一下,你要把一个方形的乐高积木严丝合缝地按进底座,或…

作者头像 李华