- 使用RelativeContainer和Stack布局,实现可滑动列表在页面在底部,且在列表滑动到页面顶部时,表现页面顶部标题栏。
- Stack({ alignContent: Alignment.TopStart }) {
- RelativeContainer() {
- // Image地图
- ImageMapView()
- // 底部可变分阶段滑动列表
- List({ scroller: this.listScroller }) {
- ...
- }
- .alignRules({
- 'bottom': { 'anchor': '__container__', 'align': VerticalAlign.Bottom },
- 'left': { 'anchor': '__container__', 'align': HorizontalAlign.Start },
- 'right': { 'anchor': '__container__', 'align': HorizontalAlign.End },
- })
- }
- StatusHead({
- statusBarHeight: this.statusBarHeight,
- topHeaderHeight: CommonConstants.PAGE_HEADER_HEIGHT,
- isShow: this.isShow
- })
- }
复制代码
- 通过对List设置onTouch属性,记载手指按下和离开屏幕纵坐标,判断手势是上/下滑。
- List({ scroller: this.listScroller }) {
- ListItemGroup({ header: this.itemHead("安全出行季") }){
- ...
- }
- }
- .onTouch((event) => {
- switch (event.type) {
- // 手指按下触摸屏幕
- case TouchType.Down: {
- this.yStart = event.touches[0].y; // 手指按压屏幕的纵坐标
- break;
- }
- // 手指在屏幕移动
- case TouchType.Move: {
- let yEnd = event.touches[0].y; // 手指离开屏幕的纵坐标
- let height = Math.abs(Math.abs(yEnd) - Math.abs(this.yStart)); // 手指在屏幕上的滑动距离
- let maxHeight = this.windowHeight - this.statusBarHeight; // list列表的最大高度
- // 判断上滑,且list跟随手势滑动
- if (yEnd < this.yStart) {
- this.isUp = true;
- ...
- }
- else {
- this.isUp = false;
- ...
- }
- }
- }
- })
复制代码
- 根据手指滑动的长度对列表高度举行改变(以上滑为例)。
- this.isScroll = false;
- this.listHeight = temHeight;
复制代码
- 在手指滑动结束离开屏幕后,通过判断此时列表高度处于哪个区间,为列表赋予相应的高度(以上滑为例)。
- switch (event.type) {
- case TouchType.Up: {
- this.yStart = event.touches[0].y;
- let maxHeight = this.windowHeight - this.statusBarHeight; // 设置list最大高度
- // 列表上滑时,分阶段滑动
- if (this.isUp) {
- // 分阶段滑动,当list高度位于第一个item和第二个item之间时,滑动到第二个item
- if (this.listHeight > CommonConstants.LIST_HEADER_HEIGHT + this.firstListItemHeight && this.listHeight <= CommonConstants.LIST_HEADER_HEIGHT + this.firstListItemHeight + this.bottomAvoidHeight + this.secondListItemHeight) {
- this.listHeight = CommonConstants.LIST_HEADER_HEIGHT + this.firstListItemHeight + this.secondListItemHeight;
- this.isShow = false;
- return;
- }
- // 分阶段滑动,当list高度位于顶部和第二个item之间时,滑动到页面顶部
- if (CommonConstants.LIST_HEADER_HEIGHT + this.firstListItemHeight + this.bottomAvoidHeight + this.secondListItemHeight < this.listHeight && this.listHeight <= maxHeight) {
- this.listHeight = maxHeight;
- this.isScroll = true;
- this.isShow = true;
- return;
- }
- // 分阶段滑动,当list高度大于最大高度,list滑动到页面顶部内容可滚动
- if (this.listHeight >= maxHeight) {
- this.isScroll = true;
- this.isShow = true;
- return;
- }
- }
- else {
- // 下滑阶段
- ...
- }
- break;
- }
- }
复制代码 高性能知识点
不涉及
工程布局&模块类型
- bottomdrawerslidecase // har类型
- |---src/main/ets/constants
- | |---CommonConstants // 常量
- |---src/main/ets/components
- | |---Component // 自定义组件
- |---src/main/ets/utils
- | |---ArrayUtil.ets // 数组控制
- | |---dataSource.ets // 数据类型文件
- | |---WindowModel.ets // 窗口管理器
- |---src/main/ets/view
- | |---BottomDrawerSlideCase.ets // 列表吸顶穿透界面
复制代码 模块依赖
- 依赖har包-common库中日志打印模块
- 依赖路由管理模块
最后
有很多小搭档不知道学习哪些鸿蒙开发技术?不知道需要重点把握哪些鸿蒙应用开发知识点?而且学习时频仍踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
这份鸿蒙(HarmonyOS NEXT)资料包罗了鸿蒙开发必把握的焦点知识要点,内容包罗了(**ArkTS、ArkUI开发组件、Stage模子、多端摆设、分布式应用开发、音频、视频、WebGL、OpenHarmony****多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)**技术知识点。
盼望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小搭档自行领取,限时开源,先到先得~无套路领取!!
假如你是一名有履历的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行职员,可以直接领取这份资料
获取这份完备版高清学习门路,请点击→纯血版全套鸿蒙HarmonyOS学习资料****
鸿蒙(HarmonyOS NEXT)最新学习门路
- HarmonOS就业必备技能
- HarmonOS多媒体技术
有了门路图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布条记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门讲授视频,内容包罗:ArkTS、ArkUI、Web开发、应用模子、资源分类…等知识点。
获取以上完备版高清学习门路,请点击→纯血版全套鸿蒙HarmonyOS学习资料
《鸿蒙 (OpenHarmony)开发入门讲授视频》
《鸿蒙生态应用开发V2.0白皮书》
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
- ArkTS语言
- 安装DevEco Studio
- 运用你的第一个ArkTS应用
- ArkUI声明式UI开发
- .……
《鸿蒙开发进阶》
- Stage模子入门
- 网络管理
- 数据管理
- 电话服务
- 分布式应用开发
- 通知与窗口管理
- 多媒体技术
- 安全技能
- 任务管理
- WebGL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |