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

    文章

    7453

    浏览量

    129727
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2642

    浏览量

    70241
  • HarmonyOS
    +关注

    关注

    80

    文章

    2157

    浏览量

    36408

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自定义卡片编辑组件

    。 选中组件后,右上方出现两个图标,分别对应组件的删除和复制功能。 在画布拖拽组件后,会在结构区域生成结构信息树,可以在结构树上任意拖拽改变画布上的组件父子关系。 本文参考
    发表于 04-22 11:11

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

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

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

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

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

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

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

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

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

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

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

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

    鸿蒙5开发宝藏案例分享---分析帧率问题

    对复杂对象深拷贝,导致组件创建耗时激增。 列表项未复用,每次滑动都重建组件。 优化方案 : 组件复用 :用<span class=\"ne-text\"&
    发表于 06-12 17:07

    鸿蒙Next实现瀑布流布局

    设计思路 鸿蒙 Next 的瀑布流布局可以通过自定义组件结合 Column、Row 等容器组件实现。其核心思路是将数据分成若干列,每列独立滚动展示,且根据数据项高度动态调整布局,以达到类似瀑布自然流动
    发表于 06-10 14:17

    HarmonyOS实战:组件化项目搭建

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

    开源鸿蒙应用技术组件共建计划启动

    近日,开源鸿蒙开发者大会2025(OHDC.2025,以下简称“大会”)在深圳成功举办。开源四年多来,开源鸿蒙代码规模已达 1.3 亿多行,代码贡献者达 8600 多位,超过 1100 款软硬件产品
    的头像 发表于 06-05 14:33 1206次阅读

    Kuikly鸿蒙版正式开源 —— 揭秘卓越性能适配之旅

    经过一系列的探索尝试,我们全新设计了鸿蒙版的渲染层方案: 组件属性的更新: 在渲染层维护一个渲染节点的数据抽象,渲染节点通过 ArkUI 的装饰与 ArkUI
    发表于 06-04 16:46

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

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