页面间动画之放大缩小视图

        

目录

1、Exchange类型的共享元素转场

2、Static类型的共享元素转场

3、场景示例


        在不同页面间,有使用相同的元素(例如同一幅图)的场景,可以使用共享元素转场动画衔接。为了突出不同页面间相同元素的关联性,可为它们添加共享元素转场动画。如果相同元素在不同页面间的大小有明显差异,即可达到放大缩小视图的效果。

        共享元素转场的接口为:

sharedTransition(id: string, options?: sharedTransitionOptions)

        其中根据sharedTransitionOptions中的type参数,共享元素转场分为Exchange类型的共享元素转场和Static类型的共享元素转场。 

1、Exchange类型的共享元素转场

        交换型的共享元素转场,需要两个页面中,存在通过sharedTransition函数配置为相同id的组件,它们称为共享元素。这种类型的共享元素转场适用于两个页面间相同元素的衔接,会从起始页共享元素的位置、大小过渡到目标页的共享元素的位置、大小。如果不指定type,默认为Exchange类型的共享元素转场,这也是最常见的共享元素转场的方式。使用Exchange类型的共享元素转场时,共享元素转场的动画参数由目标页options中的动画参数决定。

2、Static类型的共享元素转场

        静态型的共享元素转场通常用于页面跳转时,标题逐渐出现或隐藏的场景,只需要在一个页面中有Static的共享元素,不能在两个页面中出现相同id的Static类型的共享元素。在跳转到该页面(即目标页)时,配置Static类型sharedTransition的组件做透明度从0到该组件设定的透明度的动画,位置保持不变。在该页面(即起始页)消失时,做透明度逐渐变为0的动画,位置保持不变。

        共享元素转场的动画参数由该组件sharedTransition属性中的动画参数决定。

3、场景示例

        下面介绍使用共享元素转场进行放大缩小图片的示例。

下面是起始页代码:

// src page
import router from '@ohos.router';@Entry
@Component
struct SharedTransitionSrc {build() {Column() {// 配置Exchange类型的共享元素转场,共享元素id为"sharedImage1"Image($r('app.media.girl10')).width(50).height(50).sharedTransition('sharedImage1', { duration: 1000, curve: Curve.Linear }).onClick(() => {// 点击小图时路由跳转至下一页面router.pushUrl({ url: "pages/ui/anim/scene/ShareTransitionDest" });})}.padding(10).width("100%").alignItems(HorizontalAlign.Start)}
}

下面如目标页代码:

// dest page
import router from '@ohos.router';
@Entry
@Component
struct SharedTransitionDest {build() {Column() {// 配置Static类型的共享元素转场Text("SharedTransition dest page").fontSize(16).sharedTransition('text', { duration: 500, curve: Curve.Linear, type: SharedTransitionEffectType.Static }).margin({ top: 10 })// 配置Exchange类型的共享元素转场,共享元素id为"sharedImage1"Image($r('app.media.girl10')).width(150).height(150).sharedTransition('sharedImage1', { duration: 500, curve: Curve.Linear }).onClick(() => {// 点击图片时路由返回至上一页面router.back();})}.width("100%").alignItems(HorizontalAlign.Center)}
}

        运行效果如下:

        上述示例中,第一个页面(src page)和第二个页面(dest page)都配置了id为"sharedImage1"的共享元素转场,使两个页面能匹配到这一组共享元素。从第一个页面跳转到第二个页面时,第一个页面为起始页,第二个页面为目标页。配置id为"sharedImage1"的组件按照目标页中500ms的时长进行共享元素转场,达到放大视图的效果,id为"text"的组件按照配置的Static类型sharedTransition参数中的500ms的时长进行共享元素转场,标题逐渐出现。从第二个页面返回到第一个页面时,第二个页面为起始页,第一个页面为目标页。配置id为"sharedImage1"的组件按照目标页中1000ms的时长进行共享元素转场,缩小为原始视图,id为"text"的组件按照配置的Static类型sharedTransition参数中的500ms的时长进行共享元素转场,标题逐渐隐藏。

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

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

相关文章

八皇后问题(C语言/C++)超详细讲解/由浅入深---深入八皇后问题

介绍引入 在计算机科学中,八皇后问题是一个经典的回溯算法问题。这个问题的目标是找出一种在8x8国际象棋棋盘上放置八个皇后的方法,使得没有任何两个皇后能够互相攻击。换句话说,每一行、每一列以及对角线上只能有一个皇后。 想象一下&…

踩坑记录-安装nuxt3报错:Error: Failed to download template from registry: fetch failed;

报错复现 安装nuxt3报错:Error: Failed to download template from registry: fetch failednpx nuxi init nuxt-demo 初始化nuxt 项目 报错 Error: Failed to download template from registry: fetch faile 解决方法 配置hosts Mac电脑:/etc/hostswin电…

docker小白第十一天

docker小白第十一天 dockerfile分析 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。即构建新镜像时会用到。 构建三步骤:编写dockerfile文件-docker build命令构建镜像-docker run镜像 运行容器实例。即一…

当你明白了这句话,你就开始赚到钱了

哈喽,大家好啊,我是雷工! 曾经看到稻盛和夫说过这么一句话: 其实钱并不是赚来的,而是你帮助别人解决问题后给你的回报。 这天发生了件小事,让我对这句话有了更深的认识。 一、 缘起 自从开始记笔记&…

C++基本语言:1.10类型转换:static_cast等

C基本语言包含10章节内容,存于C从入门到精通专栏 目录 一、隐式类型转换 ​编辑二、显式类型转换(强制类型转换) (1)static_cast:静态转换 可用于 不可用于 (2)dynamic_cast …

自动化测试框架 —— pytest框架入门到入职篇

01、pytest框架介绍 pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效,支持非常丰富的插件,同时兼容 unittest 框架。这就使得我们在 unittest 框架迁移到 pytest 框架的时候不需要重写代码。 pytest框架优点 1、简单…

数字IC设计——数字电路基本元器件

现代数字集成电路基本由CMOS晶体管构成,而CMOS门电路由PMOS场效应管和NMOS场效应管以对称互补的形式组成,所谓“互补”,即利用互补型MOSFET,即pMOS和nMOS,二者成对出现构成互补电路。 这种电路具有高的电路可靠性和抗干…

循环与基础函数

循环与函数 1.循环的三种方式2.循环的中断与空语句3.函数的定义与使用4.参数的作用域5.指针6.总结 1.循环的三种方式 我们最熟悉的循环为for和while,这两种循环方式在Python系列介绍过。在C中,循环的基本逻辑同Python是类似的。c中while循环的语法如下&…

使用Matplotlib绘制模拟上海城市气温变化图

模拟上海气温变化折线图 实现步骤 准备数据创建画布绘制图像显示图像 基本实现 示例代码: import matplotlib.pyplot as plt import random# 准备数据 x range(60) y_shanghai [random.uniform(15,18) for _ in x]# 创建画布 plt.figure(figure(20,8), dpi10…

【致远OA】获取指定人员的协同待发列表

接口请求说明 V6.0接口更新:不在传入ticket,改为传memberId人员ID V6.0之前http请求方式:GET http://ip:port/seeyon/rest/affairs/draft 如 http://127.0.0.1/seeyon/rest/affairs/draft?ticketxxxxxx V6.0http请求方式:GET http://ip:p…

华为路由器和交换机恢复出厂配置实操

//用户视图下输入重置交换机配置命令 <sw1>reset saved-configuration //提示将删除交换机当前配置文件&#xff0c;是否继续&#xff0c;输入Y Warning: The action will delete the saved configuration in the device. The configuration will be erased to reco…

算法巡练day04Leetcode24交换节点19删除倒数节点142环形链表

今天学习的文章和视频链接 https://www.bilibili.com/video/BV1YT411g7br/?vd_source8272bd48fee17396a4a1746c256ab0ae https://www.bilibili.com/video/BV1if4y1d7ob/?vd_source8272bd48fee17396a4a1746c256ab0ae 24两两交换链表中的节点 给你一个链表&#xff0c;两两…