HarmonyOS 鸿蒙Next中如何实现图标点击后 loading 效果
HarmonyOS 鸿蒙Next中如何实现图标点击后 loading 效果
右上角点击后会变成 loading 效果
右上角的图标可以采用 Navigation 的 menu 实现,loading 效果可以使用 LoadingProgress 但是怎么在menu 中使用 LoadingProgress
更多关于HarmonyOS 鸿蒙Next中如何实现图标点击后 loading 效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
在HarmonyOS Next中,可通过ProgressIndicator
组件实现图标点击后的loading效果。使用状态变量控制显示状态,点击图标时触发状态切换,显示加载动画。示例代码:
@Entry
@Component
struct IconWithLoading {
@State isLoading: boolean = false
build() {
Column() {
if (this.isLoading) {
ProgressIndicator()
.width(50)
.height(50)
} else {
Image($r('app.media.icon'))
.onClick(() => {
this.isLoading = true
// 执行异步操作
})
}
}
}
}
更多关于HarmonyOS 鸿蒙Next中如何实现图标点击后 loading 效果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,可以通过自定义Navigation的menu项来实现图标点击后的loading效果。具体步骤如下:
- 在Navigation的menu配置中,使用自定义组件替代静态图标,通过状态变量控制显示内容。
- 定义状态变量(如
isLoading
)来标识是否处于加载状态。 - 在menu的点击事件中,切换
isLoading
状态,并触发加载逻辑。 - 在自定义组件中,根据
isLoading
的值决定显示原始图标还是LoadingProgress组件。
示例代码片段:
// 状态管理
@State isLoading: boolean = false;
// 自定义menu组件
@Builder
loadingMenuIcon() {
if (this.isLoading) {
LoadingProgress() // 显示加载动画
.color(Color.Blue)
.height(30)
.width(30)
} else {
Image($r('app.media.menu_icon')) // 原始图标
.height(30)
.width(30)
}
}
// Navigation配置
Navigation(this.pageStack) {
// 页面内容
}
.menu(this.loadingMenuIcon.bind(this))
.onMenuClick(() => {
this.isLoading = true;
// 执行加载操作,完成后设置this.isLoading = false
})
注意:需要合理处理加载完成后的状态重置,避免界面状态异常。