首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年6月8日 星期日 11:53am

HarmonyOS鸿蒙开发实战(5.0)下拉展开图片和时间轴效果实现案例

  • 25-03-03 06:41
  • 3368
  • 14168
blog.csdn.net

鸿蒙HarmonyOS开发实战往期必看文章:

HarmonyOS NEXT应用开发性能实践总结

一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!

最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通)


介绍

下拉展开图片效果:初始时顶部图片只显示中间部分,其余部分,分别隐藏在屏幕上边缘和时间轴模块下方,随着下拉,图片会逐渐展开。 时间轴效果:位于左边,虚线贯穿整个List,每个内容模块前都有一个时间轴节点。

效果预览图

使用说明

  1. 点击向下拖动,顶部背景,上方和下方会分别从屏幕上边缘以及时间轴模块下方,逐渐显示出来。

实现思路

  1. 下拉刷新效果:通过 PullToRefresh 组件实现,通过onAreaChange接口计算图片下拉高度,使图片下拉高度为List下拉高度的1/2,下拉高度存在差值时,图片便会逐渐显示完整。 源码参考RefreshTimeLine.ets。
  1. PullToRefresh({
  2. customList: () => {
  3. // 一个用@Builder修饰过的UI方法
  4. this.getListView();
  5. },
  6. })
  7. .onAreaChange((oldValue, newValue)=>{
  8. // TODO 知识点:PullToRefresh组件会铺满整改屏幕,通过onAreaChange获取到的区域高度就是屏幕高度
  9. // TODO 知识点:并且PullToRefresh组件不会随着上拉或下拉变化,该接口只会回调一次,此处不存在频繁回调造成的性能问题
  10. this.windowHeight = (newValue.height as number);
  11. })
  12. @Builder
  13. private getListView() {
  14. List({ scroller: this.scroller })
  15. .onDidScroll((scrollOffset: number)=>{
  16. // 获取List上滑的高度,控制图片上滑的高度
  17. this.imgMarginTop = IMAGE_TOP_INIT_VALUE - this.scroller.currentOffset().yOffset;
  18. })
  19. .onAreaChange((oldValue, newValue)=>{
  20. // TODO 知识点: 通过onAreaChange获取到List的区域高度,与屏幕高度计算差值,得到下拉高度,除以高度基数,表明图片变化的高度是下拉高度的1/2
  21. this.refreshPullDownHeight =(this.windowHeight - (newValue.height as number))/this.pullDownHeightRadix;
  22. })
  23. .scrollBar(BarState.Off)
  24. .edgeEffect(EdgeEffect.None) // 必须设置列表为滑动到边缘无效果
  25. }
  1. 时间轴效果:时间轴部分:通过设置Column的bordier属性,只设置左边框实现。时间轴节点:样式通过设置borderRadius属性实现,位置通过设置margin的top实现偏移显示。 源码参考RefreshTimeLine.ets。
  1. Row() {
  2. Column() {
  3. // 时间轴节点
  4. Column()
  5. .width($r('app.integer.width_and_height_ten'))
  6. .height($r('app.integer.width_and_height_ten'))
  7. .backgroundColor($r('app.color.time_node_color'))
  8. .borderRadius($r('app.integer.borderRadius_fifty'))
  9. .margin({top:$r('app.integer.margin_top_five')})
  10. // 时间轴
  11. Column()
  12. .width($r('app.integer.width_and_height_zero'))
  13. .height($r('app.integer.width_and_height_one_hundred'))
  14. .margin({top:$r('app.integer.margin_top_five')})
  15. .border({
  16. width: { left: $r('app.string.time_line_width')},
  17. color: { left: $r('app.color.time_line_color')},
  18. style: { left: BorderStyle.Dotted}
  19. })
  20. }
  21. .margin({left:$r('app.integer.margin_left_twenty')})
  22. // 内容区域
  23. Column() {
  24. Text(time)
  25. .fontSize($r('app.integer.font_size_fourteen'))
  26. .width($r('app.string.one_hundred_percent'))
  27. .height($r('app.integer.width_and_height_twenty'))
  28. .margin({
  29. left: $r('app.integer.margin_left_ten'),
  30. top: $r('app.integer.margin_top_five'),
  31. bottom: $r('app.integer.margin_bottom_five')
  32. })
  33. Text(text)
  34. .width($r('app.string.one_hundred_percent'))
  35. .margin({left:$r('app.integer.margin_left_ten'), top:$r('app.integer.margin_top_five')})
  36. .fontSize($r('app.integer.font_size_sixteen'))
  37. }
  38. .width($r('app.string.eighty_four_percent'))
  39. .height($r('app.integer.width_and_height_one_hundred_and_twenty'))
  40. .borderRadius($r('app.integer.borderRadius_ten'))
  41. .margin({
  42. left: $r('app.integer.margin_left_twelve'),
  43. top: $r('app.integer.margin_top_fifteen'),
  44. bottom: $r('app.integer.margin_bottom_five')
  45. })
  46. .backgroundColor(Color.White)
  47. }
  48. .width($r('app.string.one_hundred_percent'))
  49. .backgroundColor($r('app.color.time_line_mode_back_color'))

高性能知识点

本示例使用了onDidScroll回调监听接口,此接口属于频繁回调接口,应该避免在内部进行冗余和耗时操作,例如避免打印日志。

onAreaChange回调监听接口: 组件位置变化时,每一帧都会触发回调,同样属于频繁回调接口,内部同样需要避免打印日志等耗时操作

工程结构&模块类型

  1. refreshtimeline // har类型
  2. |---view
  3. | |---RefreshTimeLine.ets // 视图层-下拉展开图片和时间轴效果实现案例

最后

小编在之前的鸿蒙系统扫盲中,有很多朋友给我留言,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)路线图、学习视频、文档用来跟着学习是非常有必要的。 

如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员

鸿蒙 NEXT 全栈开发学习笔记  希望这一份鸿蒙学习文档能够给大家带来帮助~

这份鸿蒙(HarmonyOS NEXT)包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、(南向驱动、嵌入式等)鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。


鸿蒙(HarmonyOS NEXT)最新学习路线

​

该路线图包含基础技能、就业必备技能、多媒体技术、六大电商APP、进阶高级技能、实战就业级设备开发,不仅补充了华为官网未涉及的解决方案

路线图适合人群:

IT开发人员:想要拓展职业边界
零基础小白:鸿蒙爱好者,希望从0到1学习,增加一项技能。
技术提升/进阶跳槽:发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术

2.视频学习教程+学习PDF文档

HarmonyOS Next 最新全套视频教程

  纯血版鸿蒙全套学习文档(面试、文档、全套视频等)       

​​

《鸿蒙大厂面试真题》

总结

参与鸿蒙开发,你要先认清适合你的方向,如果是想从事鸿蒙应用开发方向的话,可以参考本文的学习路径,简单来说就是:为了确保高效学习,建议规划清晰的学习路线

鸿蒙NEXT全套学习资料
微信名片
注:本文转载自blog.csdn.net的让开,我要吃人了的文章"https://blog.csdn.net/weixin_55362248/article/details/142389052"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top