HarmonyOS NEXT应用开发之搜索页一镜到底案例

2024-03-20 23:04

本文主要是介绍HarmonyOS NEXT应用开发之搜索页一镜到底案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

本示例介绍使用bindContentCover、transition、animateTo实现一镜到底转场动画,常用于首页搜索框点击进入搜索页场景。

效果图预览

使用说明

  1. 点击首页搜索框跳转到搜索页面显式一镜到底转场动画

实现思路

通过点击首页搜索框改变bindContentCover全屏模态转场中的isSearchPageShow参数控制页面是否显示,同时将modalTransition设置为NONE关闭全屏模态转场的动画,使用transition和animateTo实现首页到搜索页面的转场动画通过bindContentCover全屏模态转场衔接动画。 通过geometryTransition同时绑定首页和搜索页面的search框实现丝滑的上下文传承过渡,达到一镜到底的效果。

  1. 通过bindContentCover全屏模态转场实现对搜索页面显示的控制。源码参考SearchComponent.ets
    Column() {Column() {Search({ placeholder: $r('app.string.search_placeholder') }).focusOnTouch(false).focusable(false).enableKeyboardOnFocus(false).backgroundColor('#E7E9E8').width(this.searchWidth).height(40).borderRadius($r('app.string.main_page_top_borderRadius')).onClick(() => {this.onSearchClicked()}).geometryTransition(this.geometryId, { follow: true })// 搜索框转场过渡动画,cubicBezierCurve为三阶贝塞尔曲线动画.transition(TransitionEffect.OPACITY.animation({duration: 200,curve: curves.cubicBezierCurve(0.33, 0, 0.67, 1)}))}.alignItems(HorizontalAlign.Start).backgroundColor('#E7E9E8').borderRadius($r('app.string.main_page_top_borderRadius'))}.position({ x: this.XPosition })// TODO:知识点:通过bindContentCover属性为组件绑定全屏模态页面,在组件插入和删除时可通过设置转场参数ModalTransition显示过渡动效.bindContentCover(this.isSearchPageShow, this.SearchPage(), {modalTransition: ModalTransition.NONE,onDisappear: () => {this.onArrowClicked()}}).alignItems(HorizontalAlign.Start).padding({ left: $r('app.string.main_page_padding'), right: $r('app.string.main_page_padding'), top: 48,bottom: 40})}

2.通过geometryTransition同时绑定首页和搜索页面的search框实现丝滑的上下文传承过渡,使得原本独立的transition动画在空间位置上发生联系,将视觉焦点由旧视图位置引导到新视图位置。源码参考SearchComponent.ets

Column() {Search({ placeholder: $r('app.string.search_placeholder') }).focusOnTouch(false).focusable(false).enableKeyboardOnFocus(false).backgroundColor('#E7E9E8').width(this.searchWidth).height(40).borderRadius($r('app.string.main_page_top_borderRadius')).onClick(() => {this.onSearchClicked()}).geometryTransition(this.geometryId, { follow: true })// 搜索框转场过渡动画,cubicBezierCurve为三阶贝塞尔曲线动画.transition(TransitionEffect.OPACITY.animation({duration: 200,curve: curves.cubicBezierCurve(0.33, 0, 0.67, 1)}))}

3.通过transition组件内转场实现搜索页面消失显示过程中的过渡效果。源码参考SearchComponent.ets

    Image($r('app.media.ic_public_back')).width(20).onClick(() => {this.onArrowClicked()})// TODO:知识点:通过transition属性配置转场参数,在组件插入和删除时显示过渡动效。非对称对称转场,第一个为出现动效有150的延迟,第二个为消失动效.transition(TransitionEffect.asymmetric(TransitionEffect.opacity(0).animation({ curve: curves.cubicBezierCurve(0.33, 0, 0.67, 1), duration: 200, delay: 150 }),TransitionEffect.opacity(0).animation({ curve: curves.cubicBezierCurve(0.33, 0, 0.67, 1), duration: 200 }),))

4.在切换过程中使用animateTo显式动画配合改变搜索框大小实现转换过程中的动画和一镜到底的效果。源码参考SearchComponent.ets

  private onSearchClicked(): void {this.geometryId = 'search';animateTo({duration: 100,// 构造插值器弹簧曲线对象,生成一条从0到1的动画曲线curve: curves.interpolatingSpring(0, 1, 324, 38),onFinish: () => {this.geometryId = ''}}, () => {this.searchWidth = 400;this.isSearchPageShow = true;})}

高性能知识点

不涉及

工程结构&模块类型

SearchComponent                                 // har类型(默认使用har类型,如果使用hsp类型请说明原因)
|---model
|   |---ListData.ets                            // 筛选数据模型
|---SearchComponent.ets                         // 搜索模块

模块依赖

本场景依赖了路由模块注册路由。

参考资料

1.transition详细用法可参考文档

2.animateTo详细用法可参考文档

3.bindContentCover详细用法可参考文档

4.geometryTransition详细用法可参考文档

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:[https://qr21.cn/FV7h05](https://qr21.cn/FV7h0
5)

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

腾讯T10级高工技术,安卓全套VIP课程全网免费送:https://qr21.cn/D2k9D5

这篇关于HarmonyOS NEXT应用开发之搜索页一镜到底案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/831041

相关文章

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2