HarmonyOS 鸿蒙Next 线上Codelabs系列挑战赛第二期 调用三方库之shimmer

HarmonyOS 鸿蒙Next 线上Codelabs系列挑战赛第二期 调用三方库之shimmer 先上效果图:

一、项目的基本情况

项目共分2个模块,一个是本地库的调用,一个是网络上三方库的调用。本地库主要功能是随机显示若干个不同颜色的圆形图案,实现属性动画的展示,同时熟悉如何新建、调用本地库的流程步骤;网络三方库分别调用lottieETS、shimmer两个(lottieETS示例有详细的介绍,本项目主要是调用shimmer)。shimmer是一个简单灵活的为应用视图添加闪烁效果的库,主要有由左到右倾斜,由左到右竖直,由左到右圆形,由上到下水平等闪光效果。

二、项目结构

cke_20065.png

cke_1158.png

三、功能模块介绍

1、本地库

新建方式一:

cke_14654.png

cke_16205.png

cke_19132.png

新建方式二:

cke_23029.png,第二、第三步同方式一。

新建成功后如下:

cke_41804.png

cke_13009.png

页面效果:

cke_385139.png

本地库只包含一个自定义组件MyCircle,根据接收到的参数显示圆形,代码如下:

@Component
export struct MyCircle {
  @Prop cRadius:number      //半径
  @Prop fOpacity:number     //透明度
  @Prop fColor:string       //填充颜色
  @Prop xPosition:number    //x坐标位置
  @Prop yPosition:number    //y坐标位置

  build() {
    Column(){
      Circle()
        .size({width:this.cRadius*2,height:this.cRadius*2})
        .fillOpacity(this.fOpacity)
        .fill(this.fColor)
        .position({x:this.xPosition,y:this.yPosition})
  }
}

2.网络三方库

lottieETS,官方示例有详细的讲解,不再介绍。

shimmer介绍

shimmer是一个简单灵活的为应用视图添加闪烁效果的库,主要有由左到右倾斜,由左到右竖直,由左到右圆形,由上到下水平等闪光效果

下载安装

npm install @ohos/shimmer --save

备注:按照这种方式安装好后,三方库保存在

我安装在下图1的位置,先在2的位置添加一行代码:

cke_159556.png

cke_184999.png

cke_206700.png

把鼠标移动到红线上面,会有如下提示:

cke_231034.png

点击Run 'npm install’就可以安装好了

cke_250261.png

—页面调用,通过如下语句:

import {Shimmer, ShimmerElement} from '@ohos/shimmer'

页面效果:

cke_374452.png

定义相关的变量

private renderingSettings:RenderingContextSettings=new RenderingContextSettings(true)
private renderingContext:CanvasRenderingContext2D=new CanvasRenderingContext2D(this.renderingSettings)
private animationItem:any=null
mShimmer:Shimmer=new Shimmer()
//mDirection:Shimmer效果方向,默认0:从左上到右下,1:从上到下,2:右下到左上,3:从下到上
@State mDirection:number=0
//mShape:Shimmer效果形状,默认0:直线,1:圆形
@State mShape:number=0
//mShape:Shimmer效果时长,默认1000毫秒
@State mDuration:number=1000
初始化:
aboutToAppear(){
  //初始化Shimmer效果方向和形状
  this.mShimmer.setDirection(this.mDirection)
  this.mShimmer.setShape(this.mShape)
  this.mShimmer.setDuration(this.mDuration)
  this.mShimmer.setRepeatDelay(500)
}

自定义组件:

@Builder MyCanvas(){
  Column(){
    Canvas(this.renderingContext)
      .width('100%')
      .height('100%')
      .backgroundImage('image/sBackground.jpeg')
      .borderRadius(10)
  }.width('100%')
  .height(200)
}
//自定义MyButton
/*
*参数
* txt:string,Button上显示的文字
* flag:boolean,true:点击了改变效果方向按钮,false:点击了改变效果形状按钮
 */
@Builder MyButton(txt:string,flag:boolean){
  Button(txt)
    .fontSize(20)
    .fontWeight(FontWeight.Bold)
    .type(ButtonType.Normal)
    .borderRadius(10)
    .padding({left:20,right:20,top:10,bottom:10})
    .onClick(()=>{
      if(flag){
        this.mDirection++
        console.info('MyTag -------------mDirection='+this.mDirection)
        this.mDirection=this.mDirection%4
        console.info('MyTag ***********mDirection='+this.mDirection)
      }
      else{
        this.mShape++
        console.info('MyTag ***********mShape='+this.mShape)
        this.mShape=this.mShape%2
        console.info('MyTag ***********mShape='+this.mShape)
      }
      this.mShimmer.setDirection(this.mDirection)
      this.mShimmer.setShape(this.mShape)
    })
}

调用shimmer效果

//Shimmer效果
ShimmerElement({mShimmer:this.mShimmer,content:this.MyCanvas})
  .margin(10)
  .borderRadius(10)
  .opacity(0.4)

调用MyButton改变效果方向、形状代码:

Row({space:15}){
  this.MyButton('改变效果方向',true)
  this.MyButton('改变效果形状',false)
}.margin({top:10,bottom:10})

Slider组件改变效果时长代码:

Slider({
    style:SliderStyle.InSet,
    step:100,
    max:5000,
    min:0,
    value:this.mDuration
  })
  .showTips(true)
  .blockColor(Color.White)
  .trackColor(Color.Gray)
  .selectedColor(Color.Blue)
  .trackThickness(20)
  .onChange((value:number,mode:SliderChangeMode)=>{
    this.mDuration=value
    this.mShimmer.setDuration(this.mDuration)
  })

四、总结

本项目相对简单,主要是熟悉本地库及网络三方库的使用方法,不涉及到很多的组件应用,官方示例的三方库不是最新版本了,希望能够及时更新,同时也希望三方库能够更多更完善一些,尤其是使用方法能更详细一些。

源码地址:https://gitee.com/small2021/hongmeng


更多关于HarmonyOS 鸿蒙Next 线上Codelabs系列挑战赛第二期 调用三方库之shimmer的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

学习了

更多关于HarmonyOS 鸿蒙Next 线上Codelabs系列挑战赛第二期 调用三方库之shimmer的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next 线上Codelabs系列挑战赛第二期 调用三方库之shimmer”的问题,以下是专业且简洁的回答:

在HarmonyOS鸿蒙系统中调用第三方库shimmer,首先需要确保该库支持HarmonyOS平台。由于HarmonyOS采用ArkTS(Ark TypeScript)作为主要开发语言之一,以及支持部分JavaScript API,因此调用方式可能与传统Android或iOS有所不同。

  1. 查找兼容版本:首先,在shimmer库的官方文档或GitHub仓库中查找是否有针对HarmonyOS的兼容版本或说明。

  2. 引入库文件:如果找到兼容版本,按照文档说明将库文件(如.js、.ets或相应的模块包)引入到你的HarmonyOS项目中。

  3. 使用shimmer:在ArkTS或JavaScript代码中,按照shimmer库的API文档调用相应功能。这通常涉及创建shimmer实例、配置参数以及将其添加到UI布局中。

  4. 测试与调试:在DevEco Studio中运行你的项目,测试shimmer效果是否正常显示。如有必要,使用调试工具查看日志并调整代码。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部