鸿蒙Next阴影效果如何实现

在鸿蒙Next中,如何为UI组件添加阴影效果?具体需要调用哪些API或设置哪些属性?能否提供一个简单的代码示例?不同形状的组件(如矩形、圆形)的阴影实现方式是否有区别?

2 回复

鸿蒙Next里实现阴影?简单!用elevation属性,或者shadow组件,再调调颜色、模糊度,分分钟让UI“飘”起来~
(代码一写,阴影自来,妈妈再也不用担心我的界面扁平了!😎)

更多关于鸿蒙Next阴影效果如何实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,实现阴影效果主要通过graphic模块的ShadowStyle或组件属性设置。以下是两种常用方法:


1. 使用 ShadowStyle(推荐用于自定义绘制)

在自定义组件中通过CanvasShadowStyle设置阴影:

import { graphic } from '@kit.ArkGraphics2D';

// 在自定义组件的aboutToAppear中定义
private shadow: graphic.ShadowStyle = {
  radius: 8,          // 阴影模糊半径
  color: '#40000000', // 阴影颜色(ARGB)
  offsetX: 0,         // X轴偏移
  offsetY: 4          // Y轴偏移
}

build() {
  // 在Canvas组件中应用
  Canvas(this.context)
    .width('100%')
    .height(100)
    .shadow(this.shadow)
    .onReady(() => {
      // 绘制带阴影的矩形
      this.context.fillRect(20, 20, 100, 60);
    })
}

2. 使用通用组件样式属性

对基础组件(如ColumnText)直接设置阴影样式:

Column() {
  Text('带阴影文本')
    .fontSize(20)
}
.shadow({
  radius: 10,
  color: Color.Black,
  offsetX: 2,
  offsetY: 2
})
.backgroundColor(Color.White)
.width('90%')
.padding(20)

关键参数说明:

  • radius:阴影模糊程度(值越大越模糊)
  • color:建议使用半透明色(如#20000000
  • offsetX/Y:阴影偏移量(正值向右下,负值向左上)

注意事项:

  1. 阴影性能与模糊半径正相关,建议radius值≤15
  2. 某些容器组件需设置背景色阴影才可见
  3. 可配合borderRadius实现圆角阴影效果

实际开发中推荐使用方法2,性能更优且代码更简洁。

回到顶部