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

手把手教你玩转HDS沉浸光感效果

鸿蒙开发干货——手把手教你玩转HDS沉浸光感效果大家好我是青蓝逐码的云杰。最近有不少用户在交流时间到应用底部 Tab 栏那种高级的“发光”和“沉浸”质感是怎么做出来的在鸿蒙应用开发中细腻的光影和材质表现确实是提升 UI 质感、打造沉浸式体验的关键一环。无论是底部 Tab 栏的毛玻璃光感还是顶部导航栏的高级光效掌握系统级材质能力都能让你的应用瞬间“高大上”。本文将带你解锁鸿蒙开发中HDSHarmonyOS Design System沉浸光感材质的全流程技巧附完整代码示例和降级适配指南让你的应用轻松玩转高级光影效果。一、沉浸光感是什么从 HarmonyOS 6.1.0(23) 版本开始kit.UIDesignKit为 HDS 组件引入了强大的systemMaterialEffect系统材质效果能力。其中最吸引人的就是沉浸光感IMMERSIVE。与传统的纯色或简单的毛玻璃不同沉浸光感会在组件内部模拟真实的物理光照模型。当你点击或与之交互时会产生细腻的“光晕”和“反射”反馈极大地增强了控件的立体感和触控反馈的真实度。先来看看最终的实现效果目前这套能力主要应用于两大核心组件HdsNavigation可为标题栏TitleBar设置沉浸光感。HdsTabs可为底部的悬浮页签TabBar设置沉浸光感。二、实战演练为底部悬浮页签添加沉浸光感接下来我们以底部的HdsTabs为例一步步实现沉浸光感效果。1. 基础配置与准备首先确保你的工程引入了UIDesignKit相关的模块。我们需要HdsTabs、HdsTabsController以及hdsMaterial。import{hdsMaterial,HdsTabs,HdsTabsController}fromkit.UIDesignKit;import{SymbolGlyphModifier}fromkit.ArkUI;同时我们定义好 Tab 栏的菜单配置使用系统 Symbol 图标支持多色渲染interfaceMenuItem{symbolGlyph:SymbolGlyphModifier;symbolGlyph1:SymbolGlyphModifier;label:string;}constMENU_CONFIG:MenuItem[][{symbolGlyph:newSymbolGlyphModifier($r(sys.symbol.clock)).renderingStrategy(SymbolRenderingStrategy.MULTIPLE_COLOR).fontColor([$r(sys.color.ohos_id_color_bottom_tab_icon_off),$r(sys.color.ohos_id_color_bottom_tab_icon_auxcolor_off02),]),symbolGlyph1:newSymbolGlyphModifier($r(sys.symbol.clock_fill)).renderingStrategy(SymbolRenderingStrategy.MULTIPLE_COLOR).fontColor([$r(app.color.primary_blue),$r(sys.color.ohos_id_color_primary_contrary),]),label:待取,},// ... 其他 Tab 项配置];2. 核心方案一使用系统自适应沉浸光感官方推荐在绝大多数场景下我们推荐使用ADAPTIVE自适应模式。系统会根据当前设备的算力和性能状态自动为你选择最佳的光效表现保证流畅度的同时达到最优的视觉效果。EntryComponentstruct Index{privatehdsTabsController:HdsTabsControllernewHdsTabsController();build(){HdsTabs({controller:this.hdsTabsController}){ForEach(MENU_CONFIG,(item:MenuItem,index:number){TabContent(){// 这里放你的页面内容比如 PackagesPage()}.tabBar(newBottomTabBarStyle({normal:item.symbolGlyph,selected:item.symbolGlyph1},item.label).labelStyle({selectedColor:$r(app.color.primary_blue)// 设置文字高亮色}))})}.barOverlap(true)// 允许内容延伸到 Tab 栏底部.barPosition(BarPosition.End)// 核心配置开启悬浮样式并设置自适应材质.barFloatingStyle({barBottomMargin:28,systemMaterialEffect:{materialType:hdsMaterial.MaterialType.ADAPTIVE,materialLevel:hdsMaterial.MaterialLevel.ADAPTIVE}})}}在这段代码中最核心的就是barFloatingStyle里的systemMaterialEffect属性。我们将类型和级别都交给了系统ADAPTIVE去决策。3. 核心方案二强制自定义沉浸光感效果与降级处理如果你对视觉有极高的要求希望在支持的设备上强制开启最顶级的沉浸光效例如点击时出现明显的“白光”反馈你可以手动指定材质类型和级别。避坑指南并不是所有设备都支持高级的沉浸光感IMMERSIVE。如果强行在低端设备上开启可能会导致严重的卡顿和发热。因此必须先通过 API 查询设备能力再进行优雅降级。import{hdsMaterial,HdsTabs,HdsTabsController}fromkit.UIDesignKit;EntryComponentstruct Index{privatehdsTabsController:HdsTabsControllernewHdsTabsController();// 默认我们想用最精致的效果StatecustomMaterialLevel:hdsMaterial.MaterialLevelhdsMaterial.MaterialLevel.EXQUISITE;StatecustomMaterialType:hdsMaterial.MaterialTypehdsMaterial.MaterialType.IMMERSIVE;aboutToAppear():void{// 1. 查询当前设备支持的系统材质类型letmaterialTypes:ArrayhdsMaterial.MaterialTypehdsMaterial.getSystemMaterialTypes();// 2. 检查是否支持 IMMERSIVE (沉浸光感)if(materialTypes.indexOf(hdsMaterial.MaterialType.IMMERSIVE)0){// 3. 如果不支持进行降级处理使用基础的背景模糊平滑效果this.customMaterialTypehdsMaterial.MaterialType.BACKGROUND_BLUR;this.customMaterialLevelhdsMaterial.MaterialLevel.SMOOTH;}}build(){HdsTabs({controller:this.hdsTabsController}){// ... TabContent 配置与之前相同}.barFloatingStyle({barBottomMargin:28,systemMaterialEffect:{materialType:this.customMaterialType,// 应用查询后的类型materialLevel:this.customMaterialLevel// 应用查询后的级别}})}}关于材质级别的选择EXQUISITE(精致)光影反馈最强烈、最细腻比如点击时有明显点光源照射的高亮白光但对性能要求最高。GENTLE(柔和)光影反馈相对柔和内敛。SMOOTH(平滑)性能开销最低通常用于不支持复杂光照的降级场景。三、总结通过上述两种方案我们可以非常轻松地为鸿蒙应用接入极具高级感的 HDS 沉浸光感材质。追求稳定和省心无脑选择ADAPTIVE。追求极致视觉体验使用IMMERSIVEEXQUISITE但切记一定要做设备能力查询和降级处理hdsMaterial.getSystemMaterialTypes()这是保证用户体验底线的关键。同时别忘了结合deviceInfo.sdkApiVersion 23来做好旧版本系统的兼容。掌握了这些你的应用 UI 质感绝对能上一个大台阶。赶紧去代码里试试吧如果有任何疑问欢迎在评论区交流。

相关文章:

手把手教你玩转HDS沉浸光感效果

鸿蒙开发干货——手把手教你玩转HDS沉浸光感效果 大家好,我是青蓝逐码的云杰。 最近有不少用户在交流时间到,应用底部 Tab 栏那种高级的“发光”和“沉浸”质感是怎么做出来的? 在鸿蒙应用开发中,细腻的光影和材质表现确实是提升…...

vLLM-v0.17.1实战教程:多LoRA动态切换支持个性化Agent服务

vLLM-v0.17.1实战教程:多LoRA动态切换支持个性化Agent服务 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,以其出色的吞吐量和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已经发展…...

游戏工作室多开怎么快速识别?用IP查询定位服务三步锁定异常账号

开服第三天凌晨,运营群突然炸了——后台数据显示同时在线人数暴涨3倍,但付费率跌到了几乎为零。我拉了一下登录日志,发现80%以上的新增IP请求都来自几家云厂商的数据中心网段,归属地集中在少数几个城市,而且这些IP在24…...

重构设计工作流:HTML到Figma的智能转换技术解析

重构设计工作流:HTML到Figma的智能转换技术解析 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 在数字产品开发的现代工作流中,设计与代码之间的鸿沟一直是…...

Magnet2Torrent终极指南:如何将磁力链接快速转换为种子文件

Magnet2Torrent终极指南:如何将磁力链接快速转换为种子文件 【免费下载链接】Magnet2Torrent This will convert a magnet link into a .torrent file 项目地址: https://gitcode.com/gh_mirrors/ma/Magnet2Torrent 在P2P资源共享和下载管理中,磁…...

XUnity自动翻译器:5分钟打造你的专属中文游戏世界

XUnity自动翻译器:5分钟打造你的专属中文游戏世界 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏中的生涩文本而烦恼吗?XUnity自动翻译器为你带来革命性的游戏本地…...

从“指纹”到“防伪钢印”:用程序员能懂的生活例子,图解Hash、MAC、HMAC的核心原理与安全升级

从“指纹”到“防伪钢印”:用程序员能懂的生活例子,图解Hash、MAC、HMAC的核心原理与安全升级 想象一下,你每天使用的Git提交、银行转账甚至登录验证,背后都依赖一套看不见的“数字封印”技术。这些技术从简单的数据指纹到复杂的防…...

3步搞定Unity游戏AI翻译:XUnity.AutoTranslator新手完全指南

3步搞定Unity游戏AI翻译:XUnity.AutoTranslator新手完全指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的外语Unity游戏发愁吗?想轻松玩转全球游戏却卡在语言关&…...

从静态到动态:深度解析shields.io徽章生成与Git平台项目美化实战

1. 为什么你的开源项目需要徽章? 第一次在GitHub上看到那些花花绿绿的小徽章时,我完全没意识到它们的重要性。直到自己的项目star数一直上不去,才发现专业的第一印象有多关键。这些看似简单的彩色标签,实际上是项目的"数字名…...

空间注意力机制(SAM)的实证研究:超越Transformer的设计启示

1. 空间注意力机制(SAM)的前世今生 第一次接触空间注意力机制是在2019年那篇微软亚研的论文里,当时就被它反直觉的结论震撼到了。你可能听说过Transformer,但SAM才是真正让我重新思考注意力机制本质的研究。简单来说,它…...

Intv_AI_MK11辅助VMware虚拟机环境搭建与配置

Intv_AI_MK11辅助VMware虚拟机环境搭建与配置 1. 准备工作与环境概述 在开始AI开发之前,搭建一个稳定可靠的开发环境至关重要。VMware虚拟机提供了一个隔离且灵活的解决方案,让你可以在不影响主机系统的情况下运行Ubuntu等操作系统,并在其中…...

CSP策略对vue3项目的一些影响

1、避免使用 eval() 或 new Function()注&#xff1a;检查第三方库是否兼容 CSP 策略&#xff0c;有些老库可能偷偷用 eval()&#xff0c;要测试一下2、尽量避免内联样式 <!-- ✅ 编译后可能变成 JS 赋值&#xff0c;所以能通过--> <div :style"{ color: red}&qu…...

GNU Radio 3.8 OOT模块开发避坑指南:从gr_modtool到CMake编译的完整流程

GNU Radio 3.8 OOT模块开发深度排雷手册&#xff1a;从工具链配置到版本兼容性实战 在软件无线电(SDR)开发领域&#xff0c;GNU Radio作为开源标杆工具链&#xff0c;其Out-of-Tree(OOT)模块扩展机制为开发者提供了高度灵活性。本文将聚焦3.8版本下的OOT开发全流程&#xff0c;…...

别再只删特征了!用Pandas和Seaborn搞定特征共线性,我总结了3种更聪明的处理姿势

特征共线性的高阶处理&#xff1a;从数据删除到信息重构的实战进阶 在房地产价格预测项目中&#xff0c;我们常常遇到一组高度相关的特征——比如白天人口(daypop)、夜间人口(nightpop)和20-39岁夜间人口(night20-39)。传统做法是简单删除"冗余"特征&#xff0c;但这…...

NSC_BUILDER终极指南:三步解决Nintendo Switch游戏文件管理难题

NSC_BUILDER终极指南&#xff1a;三步解决Nintendo Switch游戏文件管理难题 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights…...

别再盲目备考!成人高考,职场人学历提升的省时省力方案

对于CSDN上深耕技术、奔波职场的从业者来说&#xff0c;学历提升不必“脱产内卷”&#xff0c;成人高考凭借高适配性&#xff0c;成为多数人的首选。很多职场人担心“没时间、基础差、考不过”&#xff0c;而成考恰好解决了这些核心痛点&#xff0c;轻松实现工作学习两不误。作…...

Qwen3.5-9B-AWQ-4bit实战案例:金融报表截图OCR+关键信息结构化提取

Qwen3.5-9B-AWQ-4bit实战案例&#xff1a;金融报表截图OCR关键信息结构化提取 1. 项目背景与需求分析 在金融行业日常工作中&#xff0c;分析师和业务人员经常需要处理大量报表截图。这些截图可能来自年报、季报、路演材料等各种渠道&#xff0c;包含关键财务数据和业务指标。…...

企业安全托管服务(MSS)建设实践

目前企业面临的网络威胁日益复杂&#xff0c;勒索病毒、DDoS攻击、数据泄露等安全事件频发&#xff0c;而安全人才短缺、运维成本高、防护体系碎片化等问题&#xff0c;让多数企业难以搭建自主可控的安全运营体系。在此背景下&#xff0c;企业安全托管服务&#xff08;MSS&…...

星图AI平台体验报告:训练PETRV2-BEV模型,实测效果分享

星图AI平台体验报告&#xff1a;训练PETRV2-BEV模型&#xff0c;实测效果分享 1. 项目背景与目标 BEV&#xff08;Birds Eye View&#xff09;感知技术正在成为自动驾驶领域的核心技术之一。这种技术能够将多个摄像头的视角统一转换为鸟瞰视角&#xff0c;为自动驾驶系统提供…...

OWL ADVENTURE不只是可爱!实战教程:让它成为你的网站安全守护神

OWL ADVENTURE不只是可爱&#xff01;实战教程&#xff1a;让它成为你的网站安全守护神 1. 为什么你的网站需要一只"猫头鹰守卫"&#xff1f; 在数字世界中&#xff0c;网站安全就像一座城堡的防御系统。传统的防火墙和入侵检测相当于城墙和卫兵&#xff0c;但它们…...

无人机定高不准?聊聊MS5611气压计的‘脾气’与实战避坑指南(STM32F407平台)

无人机定高不准&#xff1f;MS5611气压计的深度优化与实战避坑指南 四旋翼无人机在悬停或定高飞行时&#xff0c;高度数据跳变、定高飘忽是开发者最头疼的问题之一。气压计作为高度测量的核心传感器&#xff0c;其数据稳定性直接决定了飞行控制的品质。MS5611作为广泛采用的气…...

2026年,探寻专业AI培训公司的独特魅力与价值

在科技飞速发展的2026年&#xff0c;AI已经成为各个行业不可或缺的一部分。无论是大型企业还是初创公司&#xff0c;都在积极寻求AI人才以推动业务的创新与发展。而专业AI培训公司在这一背景下&#xff0c;展现出了独特的魅力与价值。专业AI培训公司的独特魅力紧跟前沿技术&…...

Z-Image-Turbo-辉夜巫女入门指南:专为辉夜主题设计的轻量级文生图LoRA模型解析

Z-Image-Turbo-辉夜巫女入门指南&#xff1a;专为辉夜主题设计的轻量级文生图LoRA模型解析 1. 模型简介 Z-Image-Turbo-辉夜巫女是一款基于Z-Image-Turbo模型的轻量级LoRA变体&#xff0c;专门针对"辉夜巫女"主题进行优化。这个模型能够根据简单的文字描述&#xf…...

避开这些坑,你的蓝桥杯C/C++就能多拿20分:从‘送分题’失分到稳定省二的复盘

蓝桥杯C/C竞赛避坑指南&#xff1a;从手滑失分到稳拿省二的实战策略 第一次参加蓝桥杯时&#xff0c;我盯着屏幕上那道"送分题"足足愣了五分钟——明明是个简单的进制转换&#xff0c;提交后系统却显示答案错误。直到赛后复盘才发现&#xff0c;题目要求输出字母必须…...

配方法在二次型标准化中的可逆线性变换机制解析

1. 配方法为何总能找到可逆变换 二次型标准化问题就像给一个复杂的多项式方程"瘦身"&#xff0c;而配方法就是最直观的"减肥教练"。许多初学者会疑惑&#xff1a;为什么通过配方总能找到那个关键的线性变换矩阵&#xff1f;这背后其实藏着线性代数的一个精…...

039、FreeRTOS与嵌入式GUI(如LVGL、emWin)的整合:当实时内核遇上图形界面

039、FreeRTOS与嵌入式GUI(如LVGL、emWin)的整合:当实时内核遇上图形界面 最近在调试一个智能家居中控屏项目,遇到了一个典型问题:触摸滑动列表时,界面偶尔会卡顿半秒,同时后台的传感器数据上报也出现了丢包。这种问题在整合RTOS和GUI时太常见了——图形渲染吃掉了大量…...

Pixel Couplet Gen应用场景:线下展会扫码生成专属像素春联互动装置

Pixel Couplet Gen应用场景&#xff1a;线下展会扫码生成专属像素春联互动装置 1. 项目背景与核心价值 在各类线下展会活动中&#xff0c;如何设计一个既能吸引观众参与&#xff0c;又能留下深刻印象的互动装置&#xff1f;Pixel Couplet Gen给出了一个创新解决方案。这款基于…...

Qsign签名服务:企业级QQ机器人开发签名验证解决方案与架构深度解析

Qsign签名服务&#xff1a;企业级QQ机器人开发签名验证解决方案与架构深度解析 【免费下载链接】Qsign Windows的一键搭建签名api 项目地址: https://gitcode.com/gh_mirrors/qs/Qsign 在即时通讯生态系统中&#xff0c;QQ机器人开发面临着签名验证这一关键技术壁垒。传…...

Lychee Rerank MM惊艳效果:手写体图片Query匹配印刷体政策文档高分案例

Lychee Rerank MM惊艳效果&#xff1a;手写体图片Query匹配印刷体政策文档高分案例 1. 多模态重排序的技术突破 在传统的信息检索场景中&#xff0c;我们经常会遇到这样的困境&#xff1a;用户用手写的方式提出问题&#xff0c;而系统需要从海量的印刷体文档中找到最相关的答…...

队列进行迷宫求解

解题思路: 顺序队列使用数组固定容量&#xff0c;从起点进入并标记为-1&#xff0c;代表已访问&#xff0c;出队一个方块e检查是否是终点&#xff0c;若是终点则反向回溯输出完整路径&#xff0c;若不是则寻找四个方向可通行的方块。 关键代码&#xff1a; struct Box { …...