harmonyOS6 opacity 透明度通用属性使用指南

harmonyOS6 opacity 透明度通用属性使用指南

文章目录

一、属性概述

opacity 是HarmonyOS ArkTS框架中的通用属性,用于设置组件的透明度,支持所有可显示的UI组件。该属性取值范围为 [0, 1],超出范围会自动修正为边界值;API 18及以上版本支持传入 undefined,可恢复组件默认透明度(不透明)。

核心特性

  1. 透明度取值:0(完全透明)~ 1(完全不透明);
  2. 父子组件透明度会叠加计算:最终透明度 = 父组件透明度 × 子组件透明度;
  3. 透明度为0时,组件仅视觉不可见,仍占据布局空间,与 visibility 属性区分;
  4. 支持 number 类型和 Resource 资源类型传参;
  5. API 18+ 支持 undefined,可重置为默认透明度。

二、适用环境

  • 支持API版本:基础功能 API 7+undefined 特性 API 18+
  • 适配设备:手机、平板、二合一设备、PC、智慧屏、穿戴设备等全设备类型。

三、语法定义

1. 基础语法

opacity(value:number| Resource |undefined):void

2. 参数说明

参数类型说明
number透明度数值,范围 [0, 1],超出范围自动修正
Resource资源文件定义的透明度值(float 类型资源)
undefined仅API 18+支持,重置为默认透明度(1)

四、完整使用示例

基于官方规范,提供可直接运行的ArkTS代码示例,覆盖基础取值、父子叠加、API 18+新特性三大核心场景:

// OpacityCompleteExample.ets @Entry @Component struct OpacityCompleteExample { // 定义API18+测试的可选透明度值 @State optionalOpacity: Optional<number> = undefined; build() { Column({ space: 20 }) { // 区域1:基础透明度取值展示 Text('基础透明度取值(0~1)').fontSize(16).fontWeight(FontWeight.Bold).width('90%') Column({ space: 8 }) { this.createOpacityItem(1, '不透明(1)') this.createOpacityItem(0.7, '半透明(0.7)') this.createOpacityItem(0.4, '低透明度(0.4)') this.createOpacityItem(0.1, '微透明(0.1)') this.createOpacityItem(0, '完全透明(0,占位不显示)') this.createOpacityItem(1.5, '超出上限(1.5→自动修正为1)') this.createOpacityItem(-0.3, '超出下限(-0.3→自动修正为0)') }.width('90%') // 区域2:父子组件透明度叠加 Text('父子组件透明度叠加').fontSize(16).fontWeight(FontWeight.Bold).width('90%').margin(10) Column({ space: 10 }) { Text('子组件无单独设置(继承父0.3)').fontColor(Color.White).fontSize(12) Text('子组件设置0.8(实际0.3*0.8=0.24)').fontColor(Color.White).fontSize(12).opacity(0.8) } .alignItems(HorizontalAlign.Center) .width('90%') .height(120) .backgroundColor(0x1E90FF) .opacity(0.3) .justifyContent(FlexAlign.Center) // 区域3:API18+ undefined 恢复透明度 Text('API18+:undefined恢复默认透明度').fontSize(16).fontWeight(FontWeight.Bold).width('90%').margin(10) Column({ space: 10 }) { Text('可选透明度值测试').fontColor(Color.White).fontSize(14) Text(`当前值:${this.optionalOpacity ?? 'undefined'}`).fontColor(Color.White).fontSize(12) .opacity(this.optionalOpacity) Button('切换为0.5') .width(120) .onClick(() => { this.optionalOpacity = 0.5; }) Button('恢复为undefined') .width(120) .onClick(() => { this.optionalOpacity = undefined; }) } .alignItems(HorizontalAlign.Center) .width('90%') .height(150) .backgroundColor(0xFF6347) .justifyContent(FlexAlign.Center) } .width('100%') .height('100%') .padding(20) .backgroundColor(0xF5F5F5) } // 封装透明度展示项 @Builder createOpacityItem(opacityValue: number, desc: string) { Column({ space: 4 }) { Text(desc).fontSize(10).fontColor(0x666666).width('100%') Text('') .width('100%') .height(40) .backgroundColor(0xAFEEEE) .opacity(opacityValue) } } } 

运行效果如图:


五、场景说明

场景1:基础透明度取值

  • opacity(1):组件完全不透明,为默认状态;
  • opacity(0.5):组件半透明,视觉效果柔和;
  • opacity(0):组件完全透明,仅隐藏视觉效果,保留布局占位;
  • 非法取值:1.5 自动修正为 1-0.3 自动修正为 0

场景2:父子组件透明度叠加

  • 父组件设置透明度后,未单独设置透明度的子组件会继承父组件透明度
  • 子组件单独设置透明度时,最终透明度为父子透明度相乘
  • 示例:父透明度0.3 + 子透明度0.8 = 最终透明度0.24

场景3:API 18+ undefined 重置透明度

  • 当透明度值设置为 undefined 时,组件会恢复为默认不透明状态;
  • 适用于动态切换透明度的场景,无需手动赋值为1

总结

opacity 是HarmonyOS开发中高频使用的视觉属性,通过简单的数值配置即可实现组件透明效果,支持基础取值、父子叠加、动态重置等核心能力。遵循官方规范使用该属性,可保证全设备、全版本的兼容性,适用于UI美化、交互动效等开发场景。

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

Read more

无人机和地面站能够达到的多远的通信距离?无人机需要飞多高?附在线计算网页

无人机和地面站能够达到的多远的通信距离?无人机需要飞多高?附在线计算网页

无人机和地面站能够达到的多远的通信距离?无人机需要飞多高?附在线计算网页 在无人机组网通信中,如何估算无人机与地面站之间的稳定通信距离是一个常见的问题。本文将从地球曲率和菲涅尔区两个方面,详细探讨如何计算无人机与地面站的通信距离,并提供一个在线计算网页以方便读者进行实际计算。 经常有朋友会问到这个问题, * 无人机组网通信中,如果已经知道了无人机的飞行高度、地面站天线的高度,那么无人机和地面站稳定通信距离是多少km? * 无人机组网通信中,如果已经知道了地面站天线高度、期望的稳定通信距离,无人机需要飞多高才能满足期望的通信距离? 解答这个问题,需要从以下两个方面来考虑: 1. 无线通信距离受到地球曲率的影响 2. 无线通信距离受到空间传输通道的影响。 注意:本文不讨论由于发射端EIRP不够,链路余量不足引起的通信距离不足的问题,所有的计算和分析都是假设发射端EIRP足够,链线余量足够,仅仅考虑地球曲率和空间传输通道的影响。 地球曲率(无线信号传输的视距模型):解决能否看见的问题 无人机与地面电台之间的最远通讯距离受地球曲率限制,通常采用考虑大气折射的无线电视距

By Ne0inhk

一文吃透SBUS协议:从原理到实战(无人机/航模/机器人适用)

在无人机、航模、机器人等精密控制领域,“稳定、快速、可靠”是控制信号传输的核心诉求。传统的PWM信号虽然简单直观,但存在通道数有限、抗干扰能力弱、布线复杂等痛点。而SBUS(Serial Bus)协议——由FUTABA公司专为遥控设备设计的串行数字通信协议,凭借单线传输多通道数据、抗干扰强、延迟低的核心优势,逐渐成为行业主流。 本文将从“是什么-怎么工作-协议细节-厂家产品-接口设计-代码实现-实战技巧-常见问题”八个维度,用最通俗的语言+大量对比表格,全面拆解SBUS协议。无论你是刚入门的电子爱好者,还是需要落地项目的工程师,都能从本文中找到所需的实用信息。 一、SBUS协议基础认知:核心定位与优势对比 在深入技术细节前,我们先通过对比和基础定义,快速建立对SBUS的认知。很多人会把SBUS和常见的UART、PWM等混淆,这里先明确其核心定位:SBUS是基于反向电平UART的“应用层控制协议”,专门用于遥控器与接收机、接收机与飞控/执行器之间的控制信号传输。 1.1 为什么需要SBUS?传统方案的痛点 在SBUS出现之前,航模和早期无人机主要使用PWM或PPM协议传输控

By Ne0inhk
深入解析OpenClaw Skills:从原理到实战,打造专属机器人技能

深入解析OpenClaw Skills:从原理到实战,打造专属机器人技能

一、OpenClaw Skills:机器人行为的“最小执行单元” 1.1 什么是OpenClaw Skills? OpenClaw是面向开源机械爪/小型机器人的控制框架(核心仓库:openclaw/openclaw),旨在降低机器人行为开发的门槛。而Skills(技能) 是OpenClaw框架中对机器人“单一可执行行为”的封装模块——它将机器人完成某一特定动作的逻辑(如“夹取物体”“释放物体”“移动到指定坐标”)抽象为独立、可复用、可组合的代码单元。 简单来说: * 粒度:一个Skill对应一个“原子行为”(如“单指闭合”)或“组合行为”(如“夹取→移动→释放”); * 特性:跨硬件兼容(适配不同型号机械爪)、可插拔(直接集成到OpenClaw主框架)、可扩展(支持自定义参数); * 核心价值:避免重复开发,让开发者聚焦“

By Ne0inhk

Flutter 三方库 angular_bloc 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致响应、工业级的 AngularDart 与 BLoC 协同架构实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 angular_bloc 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致响应、工业级的 AngularDart 与 BLoC 协同架构实战 在鸿蒙(OpenHarmony)系统的桌面级协同(如分布式办公网页版)、后台管理终端或高度复杂的 Web 仪表盘开发中,如何将经典的 BLoC 状态管理应用于 AngularDart 环境?angular_bloc 为开发者提供了一套天衣无缝的组件化连接器。本文将实战演示其在鸿蒙 Web 生态中的深度应用。 前言 什么是 Angular BLoC?它是一套专门为 AngularDart 框架设计的 BLoC 实现。通过指令(Directives)和管道(Pipes),它实现了由于数据流变化触发的 UI

By Ne0inhk