HarmonyOS NEXT应用开发之多模态页面转场动效实现案例

介绍

本示例介绍多模态页面转场动效实现:通过半模态转场实现半模态登录界面, 与全屏模态和组件转场结合实现多模态组合登录场景,其中手机验证码登录与账号密码登录都为组件, 通过TransitionEffect.move()实现组件间转场达到近似页面转场的效果。

效果图预览

img

使用说明

登录方式有两种,验证码登录和账号密码登录

  1. 点击主页"点击跳转半模态登录页"按钮
  2. 在半模态窗口中选中同意协议键,并点击获取验证码按钮,跳转至手机验证码登录页面。
  3. 通过点击手机验证码登录页面中的"账号密码登录",向右切换跳转至账号密码登录页面。
  4. 通过点击账号密码登录页面中的"手机验证码登录",向左切换跳转至手机验证码登录页面。

实现思路

场景:半模态转场至验证码登录,验证码登录和账户登录可以相互切换

登录方式有两种,验证码登录和账户,需要在一个全屏模态窗口CaptureLogin中切换,使用if进行条件渲染。

1、通过bindSheet属性为主页的button绑定半模态页面

Button($r('app.string.half_screen_modal_login_description')).bindSheet($$this.isPresent, this.halfModalLogin(), { // 按钮绑定半模态转场height: this.sheetHeight, // 半模态高度dragBar: this.showDragBar, // 是否显示控制条backgroundColor: "#FEFEFE",showClose:true, // 是否显示关闭图标shouldDismiss:((sheetDismiss: SheetDismiss)=> { // 半模态页面交互式关闭回调函数console.log("bind sheet shouldDismiss")sheetDismiss.dismiss()})})

2、在半模态页面中的验证码登录按钮绑定全屏模态转场,并将对应的全屏模态转场特效置空。

@Builder
halfModalLogin() { // 半模态窗口页面Button("验证码登录").bindContentCover(this.isPresentInLoginView,this.defaultLogin(),{ modalTransition: ModalTransition.NONE}) // 全屏模态转场.onClick(() => {if (this.isConfirmed) { // 判断是否同意协议// 半模态页面中跳转全屏模态登录页this.isPresentInLoginView = true;}})
}

3、通过点击第二步中的按钮跳转到全屏模态组件(CaptureLogin),并通过isDefaultLogin控制两种登录组件的条件渲染:true(手机验证码登录),false(二维码登录),同时通过TransitionEffect.move()实现组件间转场, 从而实现组件转场类似页面转场的效果。

build() {Stack({ alignContent: Alignment.TopStart }) {if (this.isDefaultLogin) {CaptchaLogin() // 手机验证码登录.transition(TransitionEffect.move(TransitionEdge.START).animation({ duration: EffectDuration, curve: Curve.Linear })) // 从左边推出} else {AccountLogin() // 账号密码登录.transition(TransitionEffect.move(TransitionEdge.END).animation({ duration: EffectDuration, curve: Curve.Linear })) // 从右边推出}}
}

高性能知识点

容器限制条件渲染组件的刷新范围

工程结构&模块类型

multimodaltransition                            // har类型
|---src/main/ets/view
|   |---HalfModalWindow.ets                     // 视图层-主页
|---src/main/ets/model
|   |---AccountLogin.ets                        // 模型层-账号密码登录页 
|   |---CaptchaLogin.ets                        // 模型层-验证码登录页(全屏模态窗口) 

模块依赖

har包-common库中UX标准
@ohos/routermodule(动态路由)

参考资料

半模态转场
全屏模态

最后分享一份鸿蒙(HarmonyOS)开发学习指南需要的可以扫码免费领取!!!

《鸿蒙(HarmonyOS)开发学习指南》

第一章 快速入门

1、开发准备

2、构建第一个ArkTS应用(Stage模型)

3、构建第一个ArkTS应用(FA模型)

4、构建第一个JS应用(FA模型)

5、…

图片

第二章 开发基础知识

1、应用程序包基础知识

2、应用配置文件(Stage模型)

3、应用配置文件概述(FA模型)

4、…

图片

第三章 资源分类与访问

1、 资源分类与访问

2、 创建资源目录和资源文件

3、 资源访问

4、…

图片

第四章 学习ArkTs语言

1、初识ArkTS语言

2、基本语法

3、状态管理

4、其他状态管理

5、渲染控制

6、…

图片

第五章 UI开发

1.方舟开发框架(ArkUI)概述

2.基于ArkTS声明式开发范式

3.兼容JS的类Web开发范式

4…

图片

第六章 Web开发

1.Web组件概述

2.使用Web组件加载页面

3.设置基本属性和事件

4.在应用中使用前端页面JavaScript

5.ArkTS语言基础类库概述

6.并发

7…

图片

11.网络与连接

12.电话服务

13.数据管理

14.文件管理

15.后台任务管理

16.设备管理

17…

图片

第七章 应用模型

1.应用模型概述

2.Stage模型开发指导

3.FA模型开发指导

4…

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

跟随Facebook的足迹:社交媒体背后的探索之旅

在当今数字化时代,社交媒体已经成为了人们日常生活中不可或缺的一部分。而在这庞大的社交媒体网络中,Facebook作为其中的巨头,一直在引领着潮流。从创立之初的一个大学社交网络到如今的全球性平台,Facebook的发展历程承载了无数故…

tf2使用savemodel保存之后转化为onnx适合进行om模型部署

tf2使用savemodel保存之后转化为onnx适合进行om模型部署 tf保存为kears框架h5文件将h5转化为savemodel格式,方便部署查看模型架构将savemodel转化为onnx格式使用netrononnx模型细微处理代码转化为om以及推理代码,要么使用midstudio tf保存为kears框架h5文…

基于SSM的“游戏交易网站”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“游戏交易网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 游戏交易网站功能结构图 游戏交易网站首页 游戏交易网站用户注册…

Hive Partitioned Tables 分区表

Hive Partitioned Tables 分区表 1.分区表概念 Hive分区表(Partitioned Tables)是一种用于管理大量数据的机制,它可以将数据分散到不同的目录或分区中,以提高查询性能、优化数据存储和管理。 这种表结构可以根据某个列的值进行分…

Jenkins +配置邮件 centos8.5 安装部署 运维系列一

1 jenkins的war包下载地址: Download and deploy 2 xftp 等方式上传到服务器 #安装jdk tar zxvf jdk-11.0.8_linux-x64_bin.tar.gz mv jdk-11.0.8/ /usr/local/jdk vim /etc/profile export JAVA_HOME/usr/local/jdk export PATH$JAVA_HOME/bin:$PATH CLASSPATH.:$JAVA_…

三分钟了解计算机网络核心概念-数据链路层和物理层

计算机网络数据链路层和物理层 节点:一般指链路层协议中的设备。 链路:一般把沿着通信路径连接相邻节点的通信信道称为链路。 MAC 协议:媒体访问控制协议,它规定了帧在链路上传输的规则。 奇偶校验位:一种差错检测方…

【Java探索之旅】继承结构 继承和组合 protected final

文章目录 📑前言一、继承1.1 继承关系的代码块1.2 protected关键字1.3 继承方式1.4 final关键字1.5 继承与组合 🌤️全篇总结 📑前言 在面向对象编程中,继承是一种重要的概念,它允许我们创建一个新类,从现有…

顺序表的实现(迈入数据结构的大门)(1)

什么是数据结构 数据结构是由:“数据”与“结构”两部分组成 数据与结构 数据:如我们所看见的广告、图片、视频等,常见的数值,教务系统里的(姓名、性别、学号、学历等等); 结构:当…

绝地求生:新型小队对决系统或将择日上线?

就在刚才,PUBG官博发布了一则短视频,视频内容为两只小队通过竞争积分排名产生不断地变化。 原文官博 视频内容 在这里我猜测为之前官方在2024工作计划视频中介绍过的新型小队对决系统: 据当时的介绍称:这个系统中,己方…

快速搭建linux虚拟机环境

1、虚拟机资源 VMwareWorkstation:Download VMware Workstation Pro virtualbox:Oracle VM VirtualBox 2、虚拟机系统资源 链接:系统资源链接 提取码:0gat 说明:此处的系统资源是采用VMwareWorkstation 虚拟机进…

北京车展现场体验商汤DriveAGI自动驾驶大模型展现认知驱动新境界

在2024年北京国际汽车展的舞台上,众多国产车型纷纷亮相,各自展示着独特的魅力。其中,小米SUV7以其精美的外观设计和宽敞的车内空间,吸引了无数目光,成为本届车展上当之无愧的明星。然而,车辆的魅力并不仅限…

658947

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 人工智能与机器学习 📝人工智能相关概念☞什么是人工智能、机器学习、深度学习☞人工智能发…

把项目打包成Maven Archetype(多模块项目脚手架)

1、示例项目 2、在pom.xml中添加archetype插件 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.0</version> </plugin>3、打包排除某些目录 当我们使用…

【Ansible】ansible-playbook剧本

playbook 是ansible的脚本 playbook的组成 1&#xff09;Tasks&#xff1a;任务&#xff1b;通过tasks 调用ansible 的模板将多个操作组织在一个playbook中运行 2&#xff09;Variables&#xff1a;变量 3&#xff09;Templates&#xff1a;模板 4&#xff09;Handles&#xf…

stm32f103zet6_DAC_2_输出电压

实现效果 DAC输出的电压 同过电压表测量电压 1.DAC配置的步骤 初始化DAC时钟。配置DAC的GPIO端口。设置DAC的工作模式&#xff08;例如&#xff0c;是否使用触发功能&#xff0c;是否启用DAC中断等&#xff09;。启动DAC。 2常用的函数 函数 HAL_DAC_Start() - 开启指定…

面试C++(基础篇)-NULL与nullptr的区别?

3: NULL与nullptr的区别&#xff1f; 在C中&#xff0c;NULL和nullptr都用于表示空指针&#xff0c;但它们之间存在一些关键的区别&#xff1a; 1. 来源和含义&#xff1a; • NULL&#xff1a;在C中&#xff0c;NULL最初是从C语言中继承过来的&#xff0c;定义在<cstddef…

《挑战100个产品拆解:抖音》

抖音&#xff0c;作为当今社交媒体领域的明星产品&#xff0c;其背后的产品思维一直备受关注。在这篇文章中&#xff0c;我们将深入拆解抖音的产品思维&#xff0c;揭示其成功的秘密。 产品定位 1.产品是什么样的用户&#xff1a; 年轻人和青少年是抖音的主要用户群体。抖音…

sql注入练习

1.什么是SQL注入 SQL注入是比较常见的网络攻击方式之一&#xff0c;它不是利用操作系统的BUG来实现攻击&#xff0c;而是针对程序员编写时的疏忽&#xff0c;通过SQL语句&#xff0c;实现无账号登录&#xff0c;甚至篡改数据库 2.sql注入原理 攻击者注入一段包含注释符的SQL语…

Ps 滤镜:渲染

Ps菜单&#xff1a;滤镜/渲染 Filter/Render “渲染”子菜单中的滤镜主要用于生成或模拟各种自然和抽象的视觉效果&#xff0c;这些效果通常很难通过传统的摄影或手绘技术实现。这类滤镜能够为设计师和艺术家提供强大的工具&#xff0c;以增强图像的视觉冲击力、创造性或实现特…

简洁大气APP下载单页源码

源码介绍 简洁大气APP下载单页源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 效果截图 源码下载 简洁大气APP下载单页源码