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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业专业化管理金字塔:技能进阶与案例分析

在纷繁复杂的企业管理领域中,一套行之有效的管理技能体系对于企业的稳健发展至关重要。本文将深入探讨企业专业化管理金字塔的五个层次:基本的管理技能、业务操作管理技能、组织管理技能、组织开发技能以及管理转变技能,并结合实际案例&#…

Linux 文件系统:C语言接口、系统接口

目录 一、文件接口 二、感性理解Linux系统下“一切皆文件” 三、C语言文件接口 1、fopen 2、当前路径 3、fwrite、fprintf、fputs 4、fgets 模拟实现cat命令 5、fscanf 五、系统接口 1、open系统调用 2、write系统调用 例:O_WRONLY 例:O_WR…

类和对象-2

文章目录 默认成员函数构造函数默认构造函数析构函数不同生命周期的构造、析构函数的执行顺序 默认成员函数 在c中,每个类里面都有六个默认成员函数。即便这个类什么都没有,也就是空类,也会有这六个成员函数。这些函数的存在极大的简化了代码…

洛谷_P5143 攀爬者_python写法

P5143 攀爬者 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 知识点: Python lambda(匿名函数) | 菜鸟教程 (runoob.com) import mathn int(input()) data [] for i in range(n):l list(map(int,input().split()))data.append(l)data.so…

网络简略总结

目录 一、三次握手 四次挥手 1、三次握手:为了建立长链接进行交互即建立一个会话,使用http/https协议 2、四次挥手是一个断开连接释放服务器资源的过程 3、如果已经建立了连接,但是客户端突然出现故障了怎么办? 4、谁可以中断连接?客户端还是服务端还是都可以? 5、…

投资者必读:如何利用龙虎榜数据捕捉市场热点

1.什么是龙虎榜 股票龙虎榜是指每个交易日证券交易所公布的关于股市交易活动的排行榜。龙虎榜主要展示了当日买卖最活跃的股票、买卖双方的机构或个人,以及他们的买卖金额和数量。这些数据可以帮助投资者了解市场的热点股票、资金流向和市场情绪。 通常&#xff0c…

《量子十年》报告更新!IBM精研量子计算,助力行业优化转型

近日,IBM商业价值研究院(IBM Institute for Business Value,简称IBV)精心出版了一本引人入胜的报告,《量子十年》第四版。这不仅是一本值得一读的书籍,更是对当前行业发展状况的全面总结和重要补充。 这部由…

Maven项目如何导入依赖包

一、导入依赖包 导入mysql依赖包 第一步:登录Maven官网 Maven官网:https://mvnrepository.com/search?qmysql 第二步:点击MySql Connector Java 第三步:点击任意一个版本 第四步:将以下内容复制到pom.xml中 导入j…

概率论基础概念和在AI中的应用

基本概念 概率论是数学的一个分支,它专注于分析和理解随机现象。通过概率论,我们可以量化不确定性,预测事件发生的可能性,并对复杂系统进行建模和分析。以下是一些概率论的基本概念和原理: 概率的定义 经典定义&…

随笔-生老病死

周末两天也没有出门,帮着一个朋友做了些图(就这两天忙不过来),挣了点外快(700),累得腰酸、眼花、脖子疼。 媳妇带着小孩出去玩,中间发了个视频,是小孩进了一个围棋培训班…

腾讯云k8s容器服务

1、新建一个集群 这个网址: 登录登录 - 腾讯云 2、选择第一个 3、名字随便起一个,然后基本默认就行 4、 组件配置直接跳过,信息确认,等待集群初始化,等10分钟左右(容器服务需要充点钱才行) 5…

【考研数学】武忠祥全年各阶段搭配用书汇总

如果选武忠祥,讲义方面选择基础篇和辅导讲义即可。分别在基础阶段和强化阶段使用。 此外复习全书不用买(无论是基础篇还是提高篇都不用)你以后可能会看到它的各种推广,不要轻信,有讲义的情况下全书很难利用得上。 武…

MATLAB学习笔记(二)PDE求解偏微分方程组

一、利用PDE求解偏微分方程组 初值为: 针对上述方程组,利用matlab自带工具箱和函数PDE进行求解。 以下是matlab中对工具箱中pdepe函数的解释。 二、matlab编程 在matlab中编程,利用PDE函数求解以上偏微分方程。 clc; clear; syms y global …

面试六分钟,难题显真章

职场,这个充满机遇与挑战的舞台,总会在不经意间上演着意想不到的转折。我从一家小公司转投到另一家,原本期待着新的工作环境和更多的发展机会,然而现实却给了我一个不小的打击。 新公司的加班文化,如同一个巨大的漩涡…

使用Vuex构建网络打靶成绩管理系统及其测试页面平台思路

使用Vuex构建网络打靶成绩管理系统及其测试页面平台 一、引言 在现代Web开发中,前端框架和状态管理库已经成为构建复杂应用的关键工具。Vue.js作为一个轻量级且易于上手的前端框架,结合Vuex这个专门为Vue.js设计的状态管理库,可以让我们更加…

es 集群安全认证

参考文档:Configure security for the Elastic Stack | Elasticsearch Guide [7.17] | Elastic ES敏感信息泄露的原因 Elasticsearch在默认安装后,不提供任何形式的安全防护不合理的配置导致公网可以访问ES集群。比如在elasticsearch.yml文件中,server…

Centos虚拟机忘记密码;重置虚机密码

虚拟机是一个好用的工具,在本地搭建的虚拟机可以给我们提供测试,但时间长了也会忘记密码;因此这里以centos系统的虚机为例,提供一个重置虚机密码的方法 1.在开机页面按“E”进入编辑模式 进入后长这样: 2.找到ro cras…

设计模式学习笔记 - 设计模式与范式 - 创建型:1.单例模式(上):为什么说支持懒加载的双重校验不必饿汉式更优?

今天开始正式学习设计模式。经典的设计模式有 23 种。其中,常用的并不是很多,可能一半都不到。作为程序员,最熟悉的设计模式,肯定包含单例模式。 本次单例模式的讲解,希望你搞清楚下面这样几个问题。(第一…

氮化镓特性简述

氮化镓 了解和记录一下氮化镓材料的特性。 结构 使用pymatgen和Materials Project中的材料数据绘制能带图。其中mp-804(1.73eV)如下所示: 以及mp-830(1.57eV)如下所示: python代码如下 # from pymatgen.ext.matproj import MPRester from mp_api.…

mac安装mongoDB数据库

1.进入MongoDB官网进行下载 MongoDB官网 2.下载完毕并且解压,重新命名为 【mongodb】文件夹 3.打开访达 按住快捷键commandshiftg 前往/usr/local路径 4.将解压并命名好的【mongodb】文件夹拖入到这个路径下 5.配置环境变量,在根目录输入open -e .zshrc…