鸿蒙应用入门级开发者认证实验二(每日任务)

举报
黄生 发表于 2025/12/17 16:16:22 2025/12/17
【摘要】 shadow属性的颜色值使用 ARGB 格式的 8 位十六进制表示法,而非传统的 6 位 RGB 格式。阴影效果通常需要半透明以实现柔和的视觉过渡,ARGB 格式通过 Alpha 通道精确控制透明度。颜色值 #1F000000的构成:前两位 1F表示 透明度(Alpha 通道),范围 00(完全透明)到 FF(完全不透明)。1F换算为十进制是 31,透明度约为 31/255 ≈ 12%。后六...

shadow属性的颜色值使用 ARGB 格式的 8 位十六进制表示法,而非传统的 6 位 RGB 格式。阴影效果通常需要半透明以实现柔和的视觉过渡,ARGB 格式通过 Alpha 通道精确控制透明度。颜色值 #1F000000的构成:

  1. 前两位 1F
    • 表示 透明度(Alpha 通道),范围 00(完全透明)到 FF(完全不透明)。
    • 1F换算为十进制是 31,透明度约为 31/255 ≈ 12%
  2. 后六位 000000
    • 表示标准的 RGB 颜色(红、绿、蓝通道),这里是纯黑色。
// 完全不透明的黑色阴影(Alpha=FF)
shadow({ radius: 6, color: "#FF000000", offsetX: 2, offsetY: 4 })

// 半透明红色阴影(Alpha=80,约50%透明度)
shadow({ radius: 6, color: "#80FF0000", offsetX: 2, offsetY: 4 })

Flex来源于 Flexible(弹性的)的缩写形式,用于以灵活方式排列、对齐子组件,并自动分配剩余空间。此属性设置主轴对齐方式为 “两端对齐”

  1. 首尾对齐:第一个子组件紧贴父容器起始端,最后一个子组件紧贴父容器终点端。
  2. 中间等距:其余子组件沿主轴均匀分布,相邻子组件间距相同。

效果示例(三个子组件):

Flex({ justifyContent: FlexAlign.SpaceBetween }) {  
  Text('1').width('20%').height(50)  // 左端对齐  
  Text('2').width('20%').height(50)  // 自动居中  
  Text('3').width('20%').height(50)  // 右端对齐  
}  

ArkTS 中 () => {}的箭头函数回调形式是现代前端/移动开发中的常见范式,与 C 语言的函数指针有区别。

特性 C 语言函数指针 ArkTS 箭头函数
语法 void (*func)(int) (param) => { ... }
作用域绑定 无自动绑定,需手动传参 自动捕获外层 this(组件实例)
定义位置 需预先声明独立函数 可内联在调用处(匿名函数)
内存管理 显式指针操作 由运行时自动垃圾回收
典型应用 回调、插件架构 事件处理、异步操作
Checkbox().onChange((value: boolean) => {
  if(value) this.finishTask++;  // ✅ 自动绑定外层 this
  else this.finishTask--;       // ✅ 直接访问组件成员变量
})
  1. 自动 this绑定 箭头函数没有自己的 this上下文,直接继承外层作用域的 this。C 需手动传递结构体指针实现类似效果。
  2. 闭包环境捕获 可无缝访问外层变量(如示例中的 this.finishTask),无需额外传参。C 需用 void* userdata参数传递上下文。
  3. 语法简洁性 内联写法避免函数命名污染,特别适合短逻辑(如事件响应)。C 需先定义函数再传递指针,破坏代码连贯性。

如何理解?

  1. 理解闭包本质(value) => { ... }视为 自带执行环境的函数对象,类似 C++ 的 lambda 表达式 [this](bool value){ ... }
  2. 注意资源管理 避免在回调内创建大对象(自动 GC 有开销),复杂逻辑建议抽离为类方法
  3. 类型安全优势 ArkTS 的类型标注(如 : boolean)提供编译时检查,比 C 的 void*更安全

在声明式 UI 框架(如 ArkUI)中,回调本质是 “描述行为"而非"传递函数指针”。这种范式能更自然地表达 UI 与数据的绑定关系。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。