#鸿蒙通关秘籍#如何实现HarmonyOS边缘内容渐变效果?

HarmonyOS
2024-12-02 14:42:25
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
星辰泪HDD

在HarmonyOS中实现边缘内容渐变效果可以通过以下步骤实现:

  1. 创建一个底层List页面,设置列表方向和大小,并通过overlay属性使用自定义的渐变背景:

    List({ space: Const.EXAMPLE_IMAGE_GAP }) {
      ForEach(this.textArray, () => {
        ListItem() {
          Image($r("app.media.fadingedge_example1"))
            .width($r('app.integer.fadingedge_example_image_width'))
            .height($r('app.integer.fadingedge_example_height'))
            .borderRadius($r('app.integer.fadingedge_example_image_border_radius'))
        }
      }, (item: number) => item.toString())
    }
    .listDirection(Axis.Horizontal)
    .width($r('app.string.fadingedge_fill_size'))
    .height($r('app.integer.fadingedge_list_height'))
    .overlay(this.fadingOverlay())
    .edgeEffect(EdgeEffect.None)
    .scrollBar(BarState.Off)
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
  2. 使用linearGradient创建渐变效果的遮罩层:

    @Builder
    fadingOverlay() {
      Column()
        .width($r('app.string.fadingedge_fill_size'))
        .height($r('app.integer.fadingedge_list_height'))
        .linearGradient({
          angle: Const.OVERLAY_LINEAR_GRADIENT_ANGLE,
          colors: [
            [this.linearGradientBeginColor, Const.OVERLAY_LINEAR_GRADIENT_COLOR_POS[0]],
            [Const.BEGIN_COLOR, Const.OVERLAY_LINEAR_GRADIENT_COLOR_POS[1]],
            [Const.BEGIN_COLOR, Const.OVERLAY_LINEAR_GRADIENT_COLOR_POS[2]],
            [this.linearGradientEndColor, Const.OVERLAY_LINEAR_GRADIENT_COLOR_POS[3]],
          ]
        })
        .animation({
          curve: Curve.Ease,
          duration: Const.DURATION
        })
        .hitTestBehavior(HitTestMode.Transparent)
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
  3. 使用onReachStartonReachEnd接口动态调整渐变的起始与结束颜色:

    .onReachStart(() => {
      this.linearGradientBeginColor = Const.BEGIN_COLOR;
      this.linearGradientEndColor = Const.END_COLOR;
    })
    .onReachEnd(() => {
      this.linearGradientBeginColor = Const.END_COLOR;
      this.linearGradientEndColor = Const.BEGIN_COLOR;
    })
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
分享
微博
QQ
微信
回复
2024-12-02 16:24:49
相关问题
如何实现组件边缘的颜色渐变
2849浏览 • 1回复 待解决
HarmonyOS 如何实现柔滑边缘效果
574浏览 • 1回复 待解决
HarmonyOS 如何实现滚动渐变效果
1042浏览 • 1回复 待解决
HarmonyOS 如何实现View边缘模糊的效果
1250浏览 • 1回复 待解决
如何实现顶部渐变遮罩效果
1133浏览 • 1回复 待解决
HarmonyOS 渐变遮罩效果如何实现
925浏览 • 1回复 待解决
HarmonyOS 如何实现文字渐变效果
948浏览 • 1回复 待解决
渐变动画效果如何实现
266浏览 • 0回复 待解决
HarmonyOS 如何实现透明度的渐变效果
689浏览 • 1回复 待解决