HarmonyOS 鸿蒙Next Progress 可以自定义吗?

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Progress 可以自定义吗?
是否可以将Progress展现的内容,调整为一个gif,根据进度refreshOffset展示gif的不同效果 根据isRefreshing 调整展示方式

Progress({ value: this.refreshOffset, total: 64, type: ProgressType.Ring })
  .width(32)
  .height(32)
  .style({ status: this.isRefreshing ? ProgressStatus.LOADING : ProgressStatus.PROGRESSING })
  .margin(10)

更多关于HarmonyOS 鸿蒙Next Progress 可以自定义吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

您可以使用Refresh结合lottie实现下拉刷新动画

import lottie, { AnimationItem } from '@ohos/lottie'

@Entry

@Component

export default struct RefreshTest {

  @State isRefreshing: boolean = false

  // 下拉刷新

  private mainCanvasRenderingContext: CanvasRenderingContext2D = new CanvasRenderingContext2D()

  private pullDownJsonPath: string = 'common/lottie/loading.json'

  private animateItem: AnimationItem | null = null

  private animateName: string = "pullDownAnimate"

  loadPullDownAnimation() {

    if (!this.animateItem) {

      this.animateItem = lottie.loadAnimation({

        container: this.mainCanvasRenderingContext, // 渲染上下文

        renderer: 'canvas', // 渲染方式

        loop: true, // 是否循环播放,默认true

        autoplay: false, // 是否自动播放,默认true

        name: this.animateName,

        path: this.pullDownJsonPath, // json路径

      })

    }

  }

  @Builder

  customPullRefresh() {

    Column() {

      Canvas(this.mainCanvasRenderingContext)

        .size({ width: 60, height: 60 })

        .onReady(() => {

          // this.loadPullDownAnimation()

        })

    }

    .width('100%')

    .justifyContent(FlexAlign.Center)

  }

  build() {

    Column() {

      Refresh({

        refreshing: $$this.isRefreshing,

        offset: 0,

        friction: 64,

        builder: this.customPullRefresh()

      }) {

        Row() {

          Text('sssssssssssssssssss')

        }.height(1000).border({ color: Color.Black, width: 5 })

      }

      .onStateChange((refreshStatus: RefreshStatus) => {

        console.info('TEST== refreshStatus: ' + refreshStatus)

        if (refreshStatus == 0) { // 未下拉

          this.animateItem!.destroy()

          this.animateItem = null

        }

        if (refreshStatus == 1) { // 下拉中

          this.loadPullDownAnimation()

        }

        if (refreshStatus == 3) { // 刷新中

          this.animateItem?.play();

        }

        if (refreshStatus == 4) { // 刷新结束

          setTimeout(() => {

            this.animateItem!.destroy()

            this.animateItem = null

          }, 75)

        }

      })

      .onRefreshing(() => {

        // this.loadPullDownAnimation()

        setTimeout(() => {

          this.isRefreshing = false

          // this.animateItem!.destroy()

          // this.animateItem = null

        }, 2000)

        console.log('onRefreshing test')

      })

    }

    .width('100%')

    .height(1000).backgroundColor(Color.Pink)

  }

}

更多关于HarmonyOS 鸿蒙Next Progress 可以自定义吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next Progress是否可以自定义,取决于具体的系统模块和功能。一般来说,HarmonyOS作为一款面向多设备、全场景的智慧操作系统,提供了丰富的自定义选项,以满足不同开发者和用户的需求。

在HarmonyOS中,开发者可以通过自定义UI界面、交互逻辑、服务组件等,来打造具有独特风格的应用和系统体验。同时,系统也支持对设备性能、资源管理、安全策略等方面进行一定程度的自定义配置。

然而,需要注意的是,由于HarmonyOS的复杂性和安全性要求,并非所有系统功能和模块都允许用户或开发者进行自定义。部分核心功能和系统组件可能受到严格的管理和控制,以确保系统的稳定性和安全性。

因此,对于HarmonyOS Next Progress的自定义问题,需要具体分析其所属的系统模块和功能。如果涉及到核心功能或敏感数据的自定义,可能需要遵循特定的开发规范和安全要求。

综上所述,HarmonyOS 鸿蒙Next Progress的自定义程度取决于具体的系统模块和功能。如需了解更多相关信息,建议参考HarmonyOS官方文档或开发者指南。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部