HarmonyOS 开发-搜索页一镜到底案例

介绍

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

效果图预览

使用说明

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

实现思路

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

  1. 通过bindContentCover全屏模态转场实现对搜索页面显示的控制。
    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动画在空间位置上发生联系,将视觉焦点由旧视图位置引导到新视图位置。

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组件内转场实现搜索页面消失显示过程中的过渡效果。

    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显式动画配合改变搜索框大小实现转换过程中的动画和一镜到底的效果。

  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                         // 搜索模块

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

《鸿蒙开发学习手册》:

如何快速入门: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.鸿蒙南向开发方向

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java绘图坐标体系

一、介绍 下图说明了Java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐…

【机器学习】深入解析机器学习基础

在本篇深入探讨中,我们将揭开机器学习背后的基础原理,这不仅包括其数学框架,更涵盖了从实际应用到理论探索的全方位视角。机器学习作为数据科学的重要分支,其力量来源于算法的能力,这些算法能够从数据中学习并做出预测…

甲方安全建设之研发安全-SCA

前言 大多数企业或多或少的会去采购第三方软件,或者研发同学在开发代码时,可能会去使用一些好用的软件包或者依赖包,但是如果这些包中存在恶意代码,又或者在安装包时不小心打错了字母安装了错误的软件包,则可能出现供…

移动端app如何设计测试用例?

1. 用户界面测试 布局和元素 验证所 有UI元素(如按钮、文本框、图像等)的位置和尺寸是否与设计图一致。 验证文本颜色、字体和大小是否易于阅读。 验证交互元素(如按钮)的点击区域是否足够大,易于触摸。 导航和流…

javaWeb车辆管理系统设计与实现

摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。 企业车辆管理系统运用现代化的计算机管理手段,不但可以对车辆的使用进行合理的管理,…

【算法】贪心算法练习一

个人主页 : zxctscl 如有转载请先通知 题目 1. 贪心算法的介绍2. 860. 柠檬水找零2.1 分析2.2 代码3. 2208. 将数组和减半的最少操作次数3.1 分析3.2 代码4. 179. 最大数4.1 分析4.2 代码 1. 贪心算法的介绍 一、贪心策略:解决问题的策略,局…

继续教育自考计算机及应用试题及答案,分享几个实用搜题和学习工具 #经验分享#知识分享

题目类型比较多,包含判断、单选、多选、填空等多种题型,适合各种职业考证搜题,比如医卫类、财会类、海外贸易等,大家可以根据自己的需求进行选择,而且直接输入题目内容就能搜索题目,很是方便。 1.试题猪 …

数据结构:构建完全二叉查找树

文章目录 1、步骤 1: 对给定数组排序2、步骤 2: 递归构建完全二叉查找树3、注意4、在有序数组中寻找根结点位置5、代码实现6、其他方法?基本思路插入操作删除操作特别考虑 对于一个给定序列的二叉查找树,有很多种,但是完全二叉查找树只有一种…

Windows安装Kibana

下载 注意:为了避免一些稀奇古怪的问题,kibana版本最好和es版本保持一致。 es版本查看: 官网下载地址: Download Kibana Free | Get Started Now | Elastichttps://www.elastic.co/cn/downloads/kibana如果是下载最新的&#x…

41---音频电路设计

视频链接 音频电路设计01_哔哩哔哩_bilibili 音频电路设计 1、音频基本介绍 1.1、设备 1.1.1、音频接口 型号:ABA-JAK-038-K44 电脑主机上的音频输出插口,一个是粉色的,用来连接麦克风或话筒,一个是绿色的,用来连…

【数据结构与算法】:归并排序和计数排序

1. 归并排序 归并排序是一种效率仅次于快速排序的排序算法。它有非递归和递归两种实现方式(本文只讲述递归实现,非递归实现以后有专门的文章)。 其实,归并排序也叫外排序。它不仅可以对内存中的数据进行排序,还能对文件里的数据排序。 比如&…

网站压力测试和Locust

一、压力测试介绍 网站压力测试是一种评估网站性能、可靠性和稳定性的方法。它通过模拟大量用户同时访问网站,来测试网站的响应时间、吞吐量、资源利用率等指标,从而发现网站的潜在问题和瓶颈。下面我将从几个方面详细介绍网站压力测试: 1、压力测试的目的 评估网站在高并发…

路由器端口映射是什么意思?

路由器端口映射是一种网络配置技术,在私有网络中允许外部网络访问特定的服务或应用程序。通过将路由器的端口映射到内部客户端设备,可以实现从公共网络访问内部网络资源的目的。 天联组网介绍 天联是一款异地组网内网穿透产品,由北京金万维科…

【Qt】:常用控件(九:容器类控件)

常用控件 一.Group Box(分组框)二.Tab Widget(标签页) 一.Group Box(分组框) 使用QGroupBox实现一个带有标题的分组框.可以把其他的控件放到里面作为一组.这样看起来能更好看一点.(换言之&…

复现bytetrack时,安装依赖项报错“: ERROR: Failed building wheel for lap

报错原因: lap 库的构建失败,因为缺少了 NumPy 库。 解决办法: 安装 NumPy 库:NumPy 是 Python 中用于科学计算的基础库,lap 依赖于它 pip install numpy 重新安装 lap 库: pip install lap

代码随想录|Day32|贪心算法 part02|● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II class Solution: def maxProfit(self, prices: List[int]) -> int: result 0 for i in range(len(prices) - 1): count prices[i1] - prices[i] if count > 0: result count return result 方法二:把if条件变成max class Solutio…

智能配电能效平台与照明系统在某地下污水处理厂中的应用

安科瑞薛瑶瑶18701709087 1、引言 随着互联网、芯片技术、通信传输的技术革新和成熟,智能照明已经广泛应用于居民生活和工业发展领域。传统的工业照明设计,常在门口附近设置集中控制箱,由控制箱内相应开关控制照明。当工厂面积较大&#xf…

ONERugged车载平板终端:提升港口运输水平

现代港口是国际贸易中至关重要的枢纽,而提高港口运输效率对于促进贸易流通和经济发展至关重要。近年来,车载平板技术的快速发展为港口运输行业带来了巨大的变革和机遇。车载平板的广泛应用不仅提高了港口的操作效率,还改善了货物跟踪、通信和…

Vue3中使用的富文本编辑器(详细实现流程)

文章目录 1. 前言2. 项目初始化3. 下载4. 使用富文本编辑器5. 注意点6. 效果图 1. 前言 有不少的前端需求都需要使用到富文本编辑器,但是富文本编辑器百花齐放,每次使用可能都会重新找一个编辑器,所以有了这篇文章. 当项目中需要使用到富文本编辑器时,可以直接按照这篇文章的步…

动态分区算法

一个不知名大学生,江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion:2024.04.09 Last edited: 2024.04.09 目录 动态分区算法 第1关:首次适应算法 任务描述 相关知识 内存分配 内存回收 编程要求…