HarmonyOS6 filter 通用属性使用指南

HarmonyOS6 filter 通用属性使用指南

文章目录

1.核心特性

特性说明
适用版本HarmonyOS API 10+
支持组件Image、Text、Button、Span、ImageSpan
核心能力提供9类滤镜效果,支持动态参数调节
类型要求所有对象参数需显式声明完整结构,禁止空对象 {}

DropShadowOption 结构说明

子参数类型说明
blurRadiusnumber阴影模糊半径,非负值
colorstring阴影颜色(支持rgba/十六进制)
offsetXnumber阴影X轴偏移量
offsetYnumber阴影Y轴偏移量

2. 完整示例代码解析

2.1 代码结构说明

以下代码实现了 filter 属性的全参数动态调节,包含状态管理、交互控制、参数重置等核心功能,适配 ArkTS 严格类型检查规则:

@Entry@Component struct FilterDemo {// 状态变量(避免与内置方法重名)@State blurSwitch:boolean=false;@State brightnessVal:number=1.0;@State contrastVal:number=1.0;@State graySwitch:boolean=false;@State hueVal:number=0;@State invertSwitch:boolean=false;@State saturateVal:number=1.0;@State sepiaSwitch:boolean=false;@State shadowSwitch:boolean=false;build(){// 主布局Column(){// 标题Text('HarmonyOS6 滤镜演示(兼容版)').fontSize(22).fontWeight(700)// 直接用数字,避免FontWeight导入.margin({ top:20, bottom:15});// 图片展示区(API 10+ 启用filter)Image('https://picsum.photos/300/200').width(300).height(200).borderRadius(12).backgroundColor('#f5f5f5')// ========== filter 核心配置(API 10+ 启用)==========.filter({ blur:this.blurSwitch ?'5px':'0px', brightness:this.brightnessVal, contrast:this.contrastVal, grayscale:this.graySwitch ?1:0, hueRotate:`${this.hueVal}deg`, invert:this.invertSwitch ?1:0, saturate:this.saturateVal, sepia:this.sepiaSwitch ?1:0, dropShadow:this.shadowSwitch ?{ blurRadius:8, color:'#66000000', offsetX:4, offsetY:4}:{ blurRadius:0, color:'#00000000', offsetX:0, offsetY:0}})// ====================================================// 控制区(滚动布局适配屏幕)Scroll(){Column({ space:10}){// 1. 模糊控制Button(this.blurSwitch ?'关闭模糊':'开启模糊(5px)').width('90%').onClick(()=>this.blurSwitch =!this.blurSwitch);// 2. 亮度调节Text(`亮度:${this.brightnessVal.toFixed(1)}`).fontSize(14).margin(15);Slider({ value:this.brightnessVal, min:0, max:2, step:0.1, style: SliderStyle.OutSet }).width('90%').onChange((v)=>this.brightnessVal = v);// 3. 对比度调节Text(`对比度:${this.contrastVal.toFixed(1)}`).fontSize(14).margin(15);Slider({ value:this.contrastVal, min:0, max:2, step:0.1, style: SliderStyle.OutSet }).width('90%').onChange((v)=>this.contrastVal = v);// 4. 灰度控制Button(this.graySwitch ?'关闭灰度':'开启灰度').width('90%').onClick(()=>this.graySwitch =!this.graySwitch);// 5. 色相旋转调节Text(`色相旋转:${this.hueVal}°`).fontSize(14).margin(15);Slider({ value:this.hueVal, min:0, max:360, step:10, style: SliderStyle.OutSet }).width('90%').onChange((v)=>this.hueVal = v);// 6. 反色控制Button(this.invertSwitch ?'关闭反色':'开启反色').width('90%').onClick(()=>this.invertSwitch =!this.invertSwitch);// 7. 饱和度调节Text(`饱和度:${this.saturateVal.toFixed(1)}`).fontSize(14).margin(15);Slider({ value:this.saturateVal, min:0, max:3, step:0.1, style: SliderStyle.OutSet }).width('90%').onChange((v)=>this.saturateVal = v);// 8. 复古控制Button(this.sepiaSwitch ?'关闭复古':'开启复古').width('90%').onClick(()=>this.sepiaSwitch =!this.sepiaSwitch);// 9. 阴影控制Button(this.shadowSwitch ?'关闭阴影':'开启阴影').width('90%').onClick(()=>this.shadowSwitch =!this.shadowSwitch);// 重置按钮Button('重置所有参数').width('90%').backgroundColor('#ff4d4f').fontColor('#ffffff').margin(10).onClick(()=>{this.blurSwitch =false;this.brightnessVal =1.0;this.contrastVal =1.0;this.graySwitch =false;this.hueVal =0;this.invertSwitch =false;this.saturateVal =1.0;this.sepiaSwitch =false;this.shadowSwitch =false;});}.padding(10)}.height('60%')}.width('100%').padding(10).justifyContent(0)}}

运行效果如图:

2.2 关键代码解析

  1. 状态变量设计
    • 变量名添加 Switch/Val 后缀(如 blurSwitchbrightnessVal),避免与 ArkUI 内置方法(如 brightness())重名。
    • 所有变量通过 @State 装饰,实现参数修改后滤镜效果实时刷新。
  2. filter 核心配置
    • blur:通过布尔值切换 5px/0px,控制模糊开关。
    • 数值型参数(如 brightness/contrast)直接绑定滑块值,支持连续调节。
    • dropShadow 始终返回完整结构(无空对象 {}),符合 ArkTS 严格类型检查规则。
  3. 交互控制
    • 开关类滤镜(模糊/灰度/反色等)通过 Button 切换布尔值。
    • 连续调节类滤镜(亮度/对比度/色相)通过 Slider 组件绑定数值。
    • 重置按钮一键恢复所有参数默认值。

3. 运行前置条件

3.1 环境配置

  1. DevEco Studio 版本 ≥ 4.0。
  2. 同步 SDK:点击 DevEco Studio 右上角 Sync Now,确保 API 10 相关依赖下载完成。

工程 API 版本配置(entry/build-profile.json5):

{"apiType":"stageMode","compileSdkVersion":10,"compatibleSdkVersion":10}

3.2 运行方式

  1. 优先选择 API 10+ 远程模拟器/真机 运行(预览器可能存在兼容性问题)。
  2. 若使用低版本 API(<10),需注释 filter 相关代码,仅保留交互框架。

4. 常见问题及解决方案

问题原因解决方案
Property 'filter' does not exist on type 'ImageAttribute'API 版本 < 10升级工程 API 版本至 10+
Object literal must correspond to some explicitly declared class or interfacedropShadow 使用空对象 {}声明完整的 DropShadowOption 结构(即使参数为0)
Property 'brightness' is not assignable to base type变量名与内置方法重名变量名添加后缀(如 brightnessVal
Cannot find module '@ohos.public.ArkUI'导入路径错误移除特殊导入,用数字替代枚举(如 700 替代 FontWeight.Bold

总结

  1. filter 是 HarmonyOS API 10+ 提供的强大视觉滤镜属性,支持9类常用滤镜效果。
  2. 使用时需注意组件兼容性(仅支持显示类组件)和类型检查规则(禁止空对象)。
  3. 示例代码实现了全参数动态调节,可直接复用至实际项目,适配严格模式语法规范。
  4. 低版本工程需升级 API 或使用 imageEffect 做降级处理。
如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力!

Read more

从0到1搞懂Linux动静态库制作与底层原理|开发者必备指南

从0到1搞懂Linux动静态库制作与底层原理|开发者必备指南

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 目录 前言: 一、先搞懂:Linux下的库是什么?二进制的“代码积木” 1.1 库的本质 1.2 库的分类与系统位置 1.3 预备工作:自定义库源码 二. 静态库:编译时链接,独立运行 2.1 整体图示:理清思路 2.2 静态库制作流程(Makefile 自动化 ,更简便) 2.3 静态库使用场景与命令

By Ne0inhk
OpenHarmony Flutter 三方库 flusmic 的适配鸿蒙调研 - 玩转跨平台 CMS 内容管理、实现动态数据流式获取与 UI 高速同步

OpenHarmony Flutter 三方库 flusmic 的适配鸿蒙调研 - 玩转跨平台 CMS 内容管理、实现动态数据流式获取与 UI 高速同步

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net OpenHarmony Flutter 三方库 flusmic 的适配鸿蒙调研 - 玩转跨平台 CMS 内容管理、实现动态数据流式获取与 UI 高速同步 前言 在现代化的 App 开发中,“内容与展现分离”已成为主流趋势。开发者不希望为了修改一段文案或更新一张活动图而被迫发版本审核。Headless CMS(无头内容管理系统)如 Prismic 正是为了解决这一痛点。 flusmic 是 Flutter 生态中对接 Prismic CMS 的优秀客户端。它以轻量、类型安全且支持丰富查询语法而著称。 伴随着鸿蒙系统(OpenHarmony)在全场景终端的爆发式增长,如何在鸿蒙手机、平板甚至折叠屏上,实现 CMS 数据的秒级同步和完美呈现?本文将带你从零开始,在鸿蒙环境下玩转 flusmic,

By Ne0inhk
Ubuntu24安装ClaudeCode

Ubuntu24安装ClaudeCode

报错 app-unavailable-in-region 这个错误说明 Claude Code 在你所在的地区不可用。返回的 HTML 页面是"App unavailable in region"(应用在该地区不可用)的提示页面,而不是安装脚本。 问题原因 Anthropic 目前对 Claude Code 的可用性有地区限制,你的 IP 地址所在地区可能不在支持范围内。 解决方案 1. 确认官方安装方式 先查看 Claude Code 的官方文档确认最新安装方法: 根据搜索结果,你的问题很明确:Claude Code 在你所在的地区不可用 。返回的 HTML 是"App unavailable in region"页面,而不是安装脚本。

By Ne0inhk
Flutter 组件 test_reflective_loader 适配鸿蒙 HarmonyOS 实战:反射装载矩阵,构建规模化测试的自动化分发中枢

Flutter 组件 test_reflective_loader 适配鸿蒙 HarmonyOS 实战:反射装载矩阵,构建规模化测试的自动化分发中枢

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 test_reflective_loader 适配鸿蒙 HarmonyOS 实战:反射装载矩阵,构建规模化测试的自动化分发中枢 前言 在鸿蒙(OpenHarmony)生态迈向大规模企业级应用、涉及深度组件解耦与多维功能验证的背景下,如何通过标准化的框架降低测试样板代码(Boilerplate)的维护成本,已成为决定项目迭代质效的“深水区工程”。在鸿蒙设备这类强调 AOT 编译性能与严苛环境隔离的移动终端上,如果依然依赖传统的手工挂载单元测试用例,由于由于随着业务规模膨胀而呈几何级增长的维护量,极易由于由于人为疏漏导致核心路径的测试脱节。 我们需要一种能够在开发期利用反射特性自动探测用例、支持面向对象继承复用且具备高度声明式语义的测试装载方案。 test_reflective_loader 为 Flutter 开发者引入了基于反射的测试组织范式。它允许通过定义标准的测试类(Test Classes),并在运行时自动识别带有特定前缀的测试

By Ne0inhk