首页 鸿蒙 正文
  • 本文约1040字,阅读需5分钟
  • 134
  • 0

HarmonyOS 骨架屏组件封装

温馨提示:本文最后更新于2024年9月23日 12:41,若内容或图片失效,请在下方留言或联系博主。

封装一个骨架屏组件,纯干货 一句废话没有

直接引用组件就可以使用,后面上代码[嘿嘿]

1. 首先这个组件基于四个非常常见的功能实现

onAppear(()=>{})    // 组件挂载显示后触发此回调 
animation({             // 动画效果
      duration:1500,  // 动画显示时常
      iterations:-1      // 设置-1表示动画无限循环   
})  
linearGradient({      // 颜色渐变  设置为 透明|白|透明
      color:[ ]
})
translate({ x: '-100%'})         // 平移的距离 默认是 -100%(不显示)
// 等 触发调用时 显示 100%铺满,并设置 动画效果

2. 外部调用与参数传递

IvSkeleton ()   // 无参数默认大小
IvSkeleton ({ widthValue:  88,heightValue: 8  })  // 传参 88/8

3. 可以根据 想要显示 骨架屏的位置 渲染数据的数组长度来决定什么时候显示/关闭

    当然只是其中一种方法

骨架屏封装组件 导入直接使用

@Component
export struct IvSkeleton {
// 骨架屏内定义一个默认的宽度高度 通过外部传入参数  可以对其进行修改
  widthValue: number | string = 100
  heightValue: number | string = 20
  @State translateValue: string = "-100%"

  build() {
    Stack() {
      // 底部背景text 为灰色 
      Text()
        .backgroundColor(Color.Gray)
        .height('100%')
        .width('100%')

      // 实现 闪动效果
      Text()
        .height('100%')
        .width('100%')
        .translate({ x: this.translateValue })
        .linearGradient({
          angle: 45,  //  角度
          colors: [  // 渐变颜色不多说了
            ['rgba(255,255,255,0)', 0],
            ['rgba(255,255,255,1)', 0.5],
            ['rgba(255,255,255,0)', 0]
          ]
        })
        // 设置动画效果 时常 / 次数
        .animation({duration:1500,iterations:-1})
        // 使用组件后触发
        .onAppear(()=>{
          this.translateValue = '100%'
        })

    }
    .height(this.heightValue)
    .width(this.widthValue)
  }
}

 

评论