0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙ListContainer粘性头部装饰器组件

OpenHarmony技术社区 来源:HarmonyOS技术社区 作者:开鸿HarmonyOS 2021-10-19 09:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这是一个 ListContainer 的粘性头部装饰器组件,主要用于展示列表+粘性头部的滑动效果。

原理解析

UI 显示部分如下图所示,基础布局采用 TabList+PageSlider 联动,实现翻页滑动效果,TabList 实现 page 页 title 自定义显示,PageSlider 通过加载不同的布局显示对应滑动列表。

单个 page 页面中采用 ListContainer+Text,header 头部是使用悬停的 Text 控件来显示的,根据需要显示的头部类型来加载 Text 控件数量。

这里需要注意:HarmonyOS SDK 6 及之前版本仍不支持 PageSlider 添加 Fraction,故采用 PageSlider 添加 ComponentContainer 方式实现相似效果。

滑动处理逻辑如下:

  • 首先在滑动监听接口中通过获取触摸点 Y 坐标值 point.getY() 来判断上下滑动方向。

  • 通过 Header 头部类型判断需要执行的代码逻辑,仅在需要更新 herader 头部显示时添加移动动画效果。

不同 header 头部类型滑动事件的处理思路是一样的,单头部 StickyHeader 逻辑如下:

  • 假设 herader 头部高度为 Y,列表单个 Item 高度为 Y,当触发列表向上滚动且当前列表显示在屏幕中的第二个 Item 是新的 Header 数据时,开始对 Text 控件执行向上滑动的动画效果。

  • 当触发列表向下滚动且当前列表显示在屏幕中的第一个 Item 是新的 Header 数据时,开始对 Text 控件执行向下滑动的动画效果。在滑动过程中,通过获取指定 Item.getTop() 与 Header 头部高度 Y 的差值。

  • 确定 Text 控件每次需要移动的 Y 轴坐标 moveY,该区间值 moveY 是 0 到 -Y 之间。最后通过调用 setContentPositionY() 方法实现控件滑动动画。

使用说明

Java 调用示例:

使用1:
//获取ListContainer
ListContainerlistContainer=(ListContainer)rootView.findComponentById(ResourceTable.Id_list_double_inline);
//需要的数据
ListdataList=Utils.getDoubleInlineList();
listContainer.setItemProvider(newInlineDoubleHeaderTestAdapter(context,dataList));
//将TextListContainer列表与HeaderDecor进行绑定
HeaderDecorheaderDecor=newHeaderDecor(listContainer,headerText,doubleText);
//headerDecor调用setDataList()方法即可
headerDecor.setDataList(dataList);

使用2:
Texttext=(Text)rootView.findComponentById(ResourceTable.Id_title_text);
//获取ListContainer
ListContainerlistContainer=(ListContainer)rootView.findComponentById(ResourceTable.Id_list_sticky_inline);
//需要的数据
ListdataList=Utils.getStickyInlineList();
listContainer.setItemProvider(newInlineStickyTestAdapter(context,dataList));
//将TextListContainer列表与HeaderDecor进行绑定
HeaderDecorheaderDecor=newHeaderDecor(listContainer,text);
//headerDecor调用setDataList()方法即可
headerDecor.setDataList(dataList);

该三方库目前已经在 gitee 上开源并且发布 lib 仓库,可以在 moudle 级别下的 build.gradle 文件中添加依赖。

//添加maven仓库
repositories{
maven{
url'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}

//添加依赖库
dependencies{
implementation'com.gitee.chinasoft_ohos1.0.0'
}

源码下载

以上就是 Header-Decor 的介绍,代码已经开源到header-decor,欢迎各位下载使用并提出宝贵意见!

https://gitee.com/chinasoft2_ohos/header-decor

责任编辑:haq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    7329

    浏览量

    128635
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2642

    浏览量

    69345
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35580

原文标题:鸿蒙粘性头部装饰器组件,已开源!

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问verilog文件开头部分的@00080000是什么意思?

    请问verilog文件开头部分的@00080000是什么意思??
    发表于 11-06 08:10

    鸿蒙非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗组件

    近日,企查查将其自研的鸿蒙弹窗组件库“QuickDialog”开源,并上线至 OpenHarmony 三方库中心仓。这是鸿蒙生态首个支持“弹窗堆栈暂存能力”的非侵入式弹窗解决方案,凭借其灵活、高效
    的头像 发表于 07-31 10:40 534次阅读
    <b class='flag-5'>鸿蒙</b>非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗<b class='flag-5'>组件</b>库

    蜻蜓FM开源“SmartXPlayer”音频播放组件,打造鸿蒙多端音频播放新引擎

    近日,由蜻蜓FM研发的音频播放组件“SmartXPlayer”正式开源并上线 OpenHarmony 三方库中心仓。作为一款专为鸿蒙多端场景打造的音频播放引擎,SmartXPlayer基于鸿蒙系统
    的头像 发表于 07-21 16:31 438次阅读
    蜻蜓FM开源“SmartXPlayer”音频播放<b class='flag-5'>组件</b>,打造<b class='flag-5'>鸿蒙</b>多端音频播放新引擎

    【HarmonyOS 5】鸿蒙页面和组件生命周期函数

    【HarmonyOS 5】鸿蒙页面和组件生命周期函数 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、生命周期阶段: 创建阶段 build
    的头像 发表于 07-11 18:24 798次阅读

    【HarmonyOS 5】金融应用开发鸿蒙组件实践

    【HarmonyOS 5】金融应用开发鸿蒙组件实践 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、鸿
    的头像 发表于 07-11 18:20 752次阅读
    【HarmonyOS 5】金融应用开发<b class='flag-5'>鸿蒙</b><b class='flag-5'>组件</b>实践

    飞书开源“RTV”富文本组件 重塑鸿蒙应用富文本渲染体验

    近日,飞书正式将其自研的富文本组件库 RichTextVista(简称“RTV”)开源,并上线OpenHarmony 三方库中心仓。该组件以领先的性能、流畅的渲染体验与高度的开放性,为鸿蒙生态提供了
    的头像 发表于 07-11 15:20 454次阅读
    飞书开源“RTV”富文本<b class='flag-5'>组件</b> 重塑<b class='flag-5'>鸿蒙</b>应用富文本渲染体验

    鸿蒙5开发宝藏案例分享---Swiper组件性能优化实战

    组件实例,减少频繁创建/销毁。 @Reusable // 关键装饰! @Component struct QuestionSwiperItem { aboutToReuse(params
    发表于 06-12 17:53

    鸿蒙5开发宝藏案例分享---瀑布流优化实战分享

    RecyclerView的缓存池) 方案2:组件复用(关键!) @Reusable // ✅ 魔法装饰 @Component struct ReusableComponent { build() { // 避免内部创建
    发表于 06-12 17:41

    HarmonyOS实战:组件化项目搭建

    前言 鸿蒙应用开发已经成为互联网新的风口,开发鸿蒙软件已经成为今年工作的核心目标。在软件开发过程中,对于复杂度较大,功能较多的软件都会采用组件化项目架构,那么对于鸿蒙应用开发是否也能实
    的头像 发表于 06-09 14:58 520次阅读
    HarmonyOS实战:<b class='flag-5'>组件</b>化项目搭建

    鸿蒙5开发宝藏案例分享---自由流转的拖拽多屏联动

    :官方文档只讲基础ListContainer,但实际开发必加下拉刷新! // 1. 布局中添加RefreshContainer组件 RefreshContainer refreshContainer
    发表于 06-03 18:50

    2025鸿蒙座舱生态伙伴大会成功举办

    近日,以“鸿蒙聚·赢未来”为主题的2025鸿蒙座舱生态伙伴大会在上海成功举办。本次会议汇聚60多家头部智能座舱软硬件合作伙伴以及多家合作车企,共同探讨了鸿蒙座舱用户体验和未来生态发展等
    的头像 发表于 04-28 10:32 984次阅读

    开源啦!!!基于鸿蒙ArkTS封装的图表组件《McCharts》,大家快来一起共创

    Hello;大家好,我是陈杨。好久没更新了,首先是自己本职工作比较忙,基本没时间写作。其次就是学习技术,自学鸿蒙ArkTS语言已经接近半年了,也算半路出师了,这次将分享我封装的组件库,所以有啥讲错
    发表于 03-15 15:21

    Get这个秘籍,鸿蒙原生应用页面滑动丝滑无比

    鸿蒙应用开发中,部分应用页面在滑动时会出现白块或白屏的问题,不仅困扰开发者,还直接影响用户体验。针对这一痛点,华为近期分别推出了针对鸿蒙原生应用ArkUI页面及Web页面的滑动白块与白屏
    发表于 03-06 14:41

    鸿蒙原生页面高性能解决方案上线OpenHarmony社区 助力打造高性能原生应用

    全局自定义组件复用,让原生容器组件组件复用子组件,降低了页面丢帧率和白屏时间。这一方案已在多个头部鸿蒙
    发表于 01-02 18:00

    开源项目!打造一款FPV头部追踪相机,让你仿佛置身遥控车之中!

    清楚地概述了每个组件如何连接以确保其正常工作。精确遵循图表有助于防止可能出现的问题,确保平移和倾斜机构与您的头部运动同步平稳运行。 接线图是 Arduino 头部跟踪发射
    发表于 12-13 14:46