LinearGradient 线性渐变:从暖金到琥珀的品牌色应用
前言渐变是提升 UI 视觉品质的重要手段。HarmonyOS 提供了LinearGradient和RadialGradient两种渐变方式支持多色阶、角度控制等高级功能。“海风日记“以“日落海景“为设计灵感围绕暖金、琥珀、橙色的渐变体系建立了完整的品牌视觉语言。全项目共有 10 处使用了 LinearGradient 渐变。本文将从源码出发深入讲解 LinearGradient 的完整用法。一、LinearGradient 概述1.1 基本语法Column() .linearGradient({ angle: 160, // 渐变角度度 colors: [ // 色阶数组 [#FFE4B0, 0.0], // [色值, 位置] 0% 位置 [#FFD080, 0.35], // 35% 位置 [#F5A623, 0.70], // 70% 位置 [#C8800A, 1.0], // 100% 位置 ] })1.2 参数说明参数类型说明是否必填anglenumber渐变角度度0 为从左到右90 为从上到下否colors[string, number][]色阶数组每个元素为[色值, 位置]是directionGradientDirection渐变方向枚举与 angle 二选一否1.3 指定方向的方式方式一使用 angle 角度angle: 0 // 从左到右 angle: 90 // 从上到下 angle: 160 // 从左上到右下 angle: 180 // 从下到上 angle: 270 // 从右到左方式二使用 direction 枚举import { GradientDirection } from kit.ArkUI .direction(GradientDirection.TopToBottom) // 从上到下 .direction(GradientDirection.LeftToRight) // 从左到右 .direction(GradientDirection.BottomToTop) // 从下到上 .direction(GradientDirection.RightToLeft) // 从右到左二、海风日记的渐变体系2.1 闪屏页渐变4 色阶Column() .linearGradient({ angle: 160, colors: [ [#FFE4B0, 0.0], // 浅金 [#FFD080, 0.35], // 暖金 [#F5A623, 0.70], // 品牌橙 [#C8800A, 1.0], // 琥珀 ] })2.2 WaveHeaderBand 渐变6 色阶Column() .linearGradient({ angle: 180, colors: [ [COLOR_HEADER_TOP, 0], // 淡橙 [#FFE0B0, 0.2], // 浅金 [#FFE8C8, 0.4], // 暖金 [#FFF0D8, 0.65], // 米白 [#FFF6EC, 0.82], // 暖白 [COLOR_HEADER_BOTTOM, 1.0] // 页面背景色 ] })2.3 写日记页渐变3 色阶Column() .linearGradient({ angle: 160, colors: [ [COLOR_HEADER_TOP, 0.0], // 淡橙 [#FFE0B0, 0.6], // 暖金 [COLOR_HEADER_BOTTOM, 1.0] // 页面背景色 ] })2.4 项目中的渐变场景统计渐变场景色阶数角度起始色结束色闪屏页背景4160°#FFE4B0#C8800AWaveHeaderBand6180°#FFD4A0#FAFAF7写日记页头部3160°#FFD4A0#FAFAF7日历页头部2180°#FFD4A0#FAFAF7个人中心头部3160°#FFD4A0#FAFAF7日记详情页头部3150°#FFD4A0#FFE8C0Premium 页 Banner3160°#FF8C00#FFD47A存储进度条290°#FFD4A0#F5A623三、渐变与品牌色系统3.1 品牌色令牌// Colors.ets — 渐变相关颜色令牌 export const COLOR_HEADER_TOP #FFD4A0 export const COLOR_HEADER_MID #FFE8C8 export const COLOR_HEADER_BOTTOM #FAFAF7 export const COLOR_PRIMARY #F5A623 export const COLOR_PRIMARY_LIGHT #FFBE45 export const COLOR_PRIMARY_DEEP #D4900A export const COLOR_AMBER #C8956A3.2 颜色渐变阶梯闪屏页渐变阶梯从亮到暗 #FFE4B0 (浅金) → #FFD080 (暖金) → #F5A623 (品牌橙) → #C8800A (琥珀) 头部渐变阶梯从亮到背景色 #FFD4A0 (淡橙) → #FFE0B0 (浅金) → #FFE8C8 (暖金) → #FFF0D8 (米白) → #FFF6EC (暖白) → #FAFAF7 (背景)3.3 渐变与品牌一致性设计原则实现方式效果统一色板所有渐变使用同一组颜色令牌视觉一致性统一角度多数使用 160° 或 180° 角度方向统一渐变过渡渐变的结束色与页面背景色一致无缝过渡多色阶3-6 色阶确保渐变平滑层次丰富四、LinearGradient 的高级用法4.1 与 Shadow 结合Column() .linearGradient({ angle: 135, colors: [[COLOR_HEADER_TOP, 0.0], [#FFCC70, 0.6], [#F5A623, 1.0]] }) .shadow({ radius: 20, color: rgba(245,166,35,0.30), offsetY: 6 })4.2 渐变进度条Stack({ alignContent: Alignment.Start }) { // 背景条 Row().height(6).width(100%) .backgroundColor(rgba(200,180,140,0.18)) .borderRadius(3) // 渐变进度条 Row().height(6).width(9%) .linearGradient({ angle: 90, colors: [[COLOR_HEADER_TOP, 0], [COLOR_PRIMARY, 1]] }) .borderRadius(3) }4.3 渐变按钮Button(立即解锁 Premium) .width(100%).height(52) .linearGradient({ angle: 90, colors: [[#FF8C00, 0], [COLOR_PRIMARY, 1]] }) .borderRadius(BTN_RADIUS_FULL)五、LinearGradient 与 RadialGradient 的对比5.1 RadialGradient 径向渐变Column() .radialGradient({ center: [50%, 50%], // 中心点 radius: 50%, // 半径 colors: [ [rgba(245,166,35,0.22), 0.0], [rgba(245,166,35,0.0), 1.0] ] })5.2 两种渐变的对比对比维度LinearGradientRadialGradient渐变方向线性方向径向发散适用场景背景、按钮、进度条光晕、发光效果参数angle colorscenter radius colors视觉效果平面过渡立体光晕六、渐变性能优化6.1 色阶数量控制// 推荐3-6 个色阶即可获得平滑渐变 colors: [[#FFE4B0, 0], [#FFD080, 0.35], [#F5A623, 0.70], [#C8800A, 1.0]] // 避免过多色阶影响性能 colors: [[#FFE4B0, 0], [#FFE6B5, 0.1], [#FFE8BA, 0.2], ...] // 不推荐6.2 避免频繁更新渐变渐变属性变化会触发重绘应避免在动画循环中更新渐变。七、常见问题与排查7.1 渐变不显示问题设置了linearGradient但渐变效果不显示。原因容器没有设置宽高或渐变被其他颜色覆盖。解决方案Column() .width(100%).height(100%) // 必须设置宽高 .linearGradient({...}) // 渐变才能显示7.2 渐变颜色断层问题渐变颜色过渡不平滑出现颜色断层。原因色阶之间的颜色差异过大或色阶数量不足。解决方案增加色阶数量使颜色过渡更平滑。总结本文通过“海风日记“的渐变体系深入讲解了 LinearGradient 的完整用法基本语法angle、colors 参数配置渐变体系闪屏、头部、写日记页等不同场景的渐变设计品牌色系统颜色令牌与渐变的一致性管理高级用法渐变与阴影、进度条、按钮的结合性能优化色阶数量控制、避免频繁更新下一篇文章将深入讲解Swiper 轮播组件实现新用户引导页敬请期待。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源LinearGradient API 文档RadialGradient API 文档ArkUI 颜色管理海风日记项目源码[HarmonyOS 开发者官网](https://atomgit.com/openharmony/docs开源鸿蒙跨平台社区GradientDirection 枚举Shadow 属性文档

相关新闻

5分钟掌握Windows窗口自由:WindowResizer强制调整任意窗口大小

5分钟掌握Windows窗口自由:WindowResizer强制调整任意窗口大小

5分钟掌握Windows窗口自由:WindowResizer强制调整任意窗口大小 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些固执的Windows窗口而烦恼吗?老旧软…

2026/10/18 4:08:50 阅读更多 →
Java架构师核心能力:从并发编程到分布式系统设计

Java架构师核心能力:从并发编程到分布式系统设计

1. 从Java开发者到架构师的思维跃迁第一次被称作"架构师"的那个下午,我正对着白板上的分布式事务方案发呆。团队里新来的应届生指着我说:"这个问题得问架构师",我才意识到角色已经转变。Java架构师不是简单的职称升级&am…

2026/10/18 4:04:47 阅读更多 →
Android NDK开发实战:性能优化与JNI接口详解

Android NDK开发实战:性能优化与JNI接口详解

1. 初识Android NDK开发第一次接触NDK开发是在2018年,当时接手一个需要处理大量图像运算的相机项目。Java层的处理速度始终达不到产品要求,帧率卡在15fps上不去。团队里的老工程师建议:"试试用C重写核心算法吧"。就这样&#xff0c…

2026/10/18 4:05:11 阅读更多 →

最新新闻

寿险财务接口渐进式改造:绞杀者模式与防腐层实战指南

寿险财务接口渐进式改造:绞杀者模式与防腐层实战指南

简介:这是毕博(BearingPoint)于2004年为太保寿险出具的财务接口系统渐进改造方案建议书,面向保险行业IT规划、财务系统升级及业务财务一体化改造相关从业者。方案围绕P07新财务系统上线目标,系统梳理项目背景、渐进改造…

2026/10/18 15:51:15 阅读更多 →
2026做商城小程序选模板平台还是定制开发好:分步决策流程与踩坑经验

2026做商城小程序选模板平台还是定制开发好:分步决策流程与踩坑经验

做商城小程序,到底选模板平台还是定制开发?这几乎是每个想做线上生意的商家都会卡住的问题。选错的代价很直接:选了模板,后期业务复杂了发现改不动,到处受限;选了定制开发,钱花了一大笔&#xf…

2026/10/18 15:51:15 阅读更多 →
CefSharp 125 x64 H.264 支持包集成指南:WPF 视频播放与避坑

CefSharp 125 x64 H.264 支持包集成指南:WPF 视频播放与避坑

简介:本资源为基于 Chromium 6422 分支的 CEF 125 系列 x64-H264 发布包,面向使用 C# 与 WPF 开发桌面客户端的工程师,尤其适合需要在 Windows 平台内嵌浏览器并支持 H264 视频播放的场景。包内共 74 个文件,以 58 个 pak 本地化与…

2026/10/18 15:51:15 阅读更多 →
数据架构设计方法论:四层五域六类元数据落地指南

数据架构设计方法论:四层五域六类元数据落地指南

简介:这是一份关于数字化转型数据架构设计方法论的演示文稿,共51页,适合企业架构师、数据治理人员及数字化规划者参考,也可用于内部培训与方案汇报。内容从数据架构定义入手,厘清了数据架构与业务架构、应用架构、技术…

2026/10/18 15:51:15 阅读更多 →
2026门店系统年费构成拆解:从档位标价到隐性支出的决策树选法

2026门店系统年费构成拆解:从档位标价到隐性支出的决策树选法

门店系统收费是否合理,多数人第一反应是翻开报价单比总价。真正决定一套系统用一年贵不贵的,不是某个标价数字,而是把档位标价、活动折算、超量追加、升级补差与续费口径全部摊开之后的全口径年费。只盯着首年标价下单,常常在第二…

2026/10/18 15:51:15 阅读更多 →
hostapd-2.10源码解析:从编译到二次开发实战指南

hostapd-2.10源码解析:从编译到二次开发实战指南

简介:hostapd-2.10源码包面向Linux无线开发与嵌入式网络工程师,用于在Linux系统上以软件方式创建和管理WiFi热点,替代硬件AP实现主机模式接入点。包内共655个文件,以363个C源文件和235个头文件为核心,覆盖nl80211驱动、…

2026/10/18 15:50:15 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →