HarmonyOS 转场动画

今天 我们来说 组件内转场动画

我们可以先编写代码如下

@Entry
@Component
struct Index {

  @State flag:boolean = true;

  build() {
    Column({space: 30}) {
      Button("转换").onClick(()=> {

      })
      Image("https://img1.baidu.com/it/u=1699929707,733321099&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800")
        .width(200)
    }
    .width('100%')
    .height('100%')
  }
}

定义了一个 状态变量 叫 flag 类型为 布尔 默认值给了个true
然后 定义了一个button按钮 定义了一个点击事件 还没有写内容
下面放了个image图片组件

然后 我们将 Column 组件内的内容改成这样

Button(this.flag?"隐藏":"显示").onClick(()=> {
    this.flag = !this.flag;
})
if(this.flag){
	Image("https://img1.baidu.com/it/u=1699929707,733321099&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800")
	 .width(200)
}

我们通过 flag 控制 image组件的显示
然后 按钮的点击事件 取反 就是 如果是 true 就赋值 false 如果是false就赋值trrue
我们点击一次 就会赋值为false image图片就没了
在这里插入图片描述
然后再点一下 就变成 true 图片就又出来了
在这里插入图片描述
但是 目前是没有任何动画效果的

这里 我们用一个新的方法 transition
我们这样写

Image("https://img1.baidu.com/it/u=1699929707,733321099&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800")
.width(200)
.transition({
  type: TransitionType.
})

然后下面就会弹出提示 告诉我们 TransitionType 下的三种类型
在这里插入图片描述
其中
Insert 组件加载时动画
Delete 组件销魂时动画
All 加载和移除 都附带动画
这里 我们选择 All
在这里插入图片描述
但是 现在我们会看到 点击后依旧是 马上显示和马上消失 并没有什么动画效果
在这里插入图片描述
因为 这里 我们还是要写它的动画属性
我们将 Column 组件内的代码改写如下

Button(this.flag?"隐藏":"显示").onClick(()=> {
  animateTo({
    duration: 3000,
    curve: Curve.Linear,
    //delay: 2000,
    iterations: 3,
    playMode: PlayMode.Alternate,
    onFinish: (()=>{
        console.log("动画结束");
    })
  },()=>{
    this.flag = !this.flag;
  })
})
if(this.flag){
  Image("https://img1.baidu.com/it/u=1699929707,733321099&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800")
    .width(200)
    .transition({
      type: TransitionType.All
    })
}

我们在点击事件 中调用 animateTo 还是第一个参数是 json的动画参数配置
第二个参数则是 需要执行的逻辑
此时我们点击 它就会有个渐渐虚化 消失的动画了
在这里插入图片描述
然后 我们动画还可以做的再花哨一点
将 if 下的代码 改写如下

if(this.flag){
    Image("https://img1.baidu.com/it/u=1699929707,733321099&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800")
    .width(200)
    .transition({
      type: TransitionType.Insert,
      translate: {x: 200,y: 100}
    })
}

这里 我们用 Insert 表示加载时 触发动画
translate 这里 我们控制 x轴 200 y轴 100 表示 插入时从这个位置插入进来

我们点击隐藏后 然后点击显示
会发现 它是从我们指定的位置进入 然后 回归正常位置的
在这里插入图片描述
然后 我们还可以设置 透明度
通过 opacity 字段实现属性控制
在这里插入图片描述
还是点击隐藏 然后点击显示
这时 我们动画刚进来是指定的位置 然后是透明的 然后一点一点恢复正常位置 透明度慢慢减掉 元素完全展示出来
在这里插入图片描述
我们还可以控制它的旋转 rotate
在这里插入图片描述
设置 我们元素默认更新进来 是一个循环 80度的效果
然后会慢慢旋转会正常状态
在这里插入图片描述
350度 则是转一整圈

最后 如果你都想单独设置 组件加载和移除 那么 就用两个 transition 控制 加载/移除 也是可以的
在这里插入图片描述

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

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

相关文章

nxp s32k144芯片使用J-LINK程序刷写

1.nxp s32k144 (1)打开软件:J-Flash V6.30j (2)新建工程:file->new project (3)选择芯片型号和 target interface (4)可以保存芯片和接口配置 (5)打开程序:File->open data file (6)程序刷写:T…

【UE5】交互式展厅数字博物馆交互是开发实战课程

长久以来,我们总是不断被初学者问到类似这样的问题:如何从头到尾做一个交互式程序开发项目?本套课程尝试对这个问题进行解答。 课程介绍视频如下 【UE5】数字展厅交互式开发全流程 【谁适合学习这门课】 本套课程面向初学者,满足…

【加强版】小学数学出题,加减乘除混合运算,支持自定义数字,一键打印

在线预览:在线HTML代码预览和运行工具 - UU在线工具 复制下面代码后到该地址预览即可 注意:在线预览不能打印。如需打印,在电脑本地上新建文本文档,粘贴代码后保存,然后把文件后缀改为.html运行,出题点击…

【Java JVM】栈帧

执行引擎是 Java 虚拟机核心的组成部分之一。 在《Java虚拟机规范》中制定了 Java 虚拟机字节码执行引擎的概念模型, 这个概念模型成为各大发行商的 Java 虚拟机执行引擎的统一外观 (Facade)。 不同的虚拟机的实现中, 通常会有 解释执行 (通过解释器执行)编译执行 (通过即时编…

rust跟我学二:模块编写与使用

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info中模块的使用。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:[我的Rust库更新]g…

【物联网】物联网设备和应用程序涉及协议的概述

物联网设备和应用程序涉及协议的概述。帮助澄清IoT层技术栈和头对头比较。 物联网涵盖了广泛的行业和用例,从单一受限制的设备扩展到大量跨平台部署嵌入式技术和实时连接的云系统。 将它们捆绑在一起是许多传统和新兴的通信协议,允许设备和服务器以新的…

小程序样例1:简单待办列表

基本功能: 显示所有待办列表(点击不同的文本进行显示) 没完成的待办 已完成的待办 新建待办test 清除待办foo 代码js文件: //index.js //获取应用实例 const app getApp(); Page({data: {todo: ,todos: [{"id": 1474…

鸿蒙Harmony-列表组件(List)详解

不要和别人比生活,每个人阶段不同,追求不同,活法自然也不同。只要今天的你能比昨天的你快乐一点点,那你就是自己人生赢家。 目录 一,定义 二,布局与约束 2.1 布局 2.2 约束 三,开发布局 3.1 设置…

LabVIEW模拟荧光显微管滑动实验

LabVIEW模拟荧光显微管滑动实验 在现代生物医学研究中,对微观生物过程的精准模拟和观察至关重要。本案例展示了如何利用LabVIEW软件和专业硬件平台,创新地模拟荧光显微管在滑动实验中的动态行为,这一过程不仅提升了实验效率,还为…

探寻爬虫世界01:HTML页面结构

文章目录 一、引言(一)背景介绍:选择爬取51job网站数据的原因(二)目标与需求明确:爬取51job网站数据的目的与用户需求 二、网页结构探索(一)51job网页结构分析1、页面组成&#xff1…

速通——决策树(泰坦尼克号乘客生存预测案例)

一、决策树 1、概述 树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果 2、建立过程 1. 特征选择:选取有较强分类能力的特征。 2. 决策树生成:根据选择的特征生成决策树。 3.…

下一代 Vue3 Devtools 正式开源

什么是 Vue DevTools Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具,它提供了一些功能来帮助开发者更好地了解 Vue 应用程序。 Vue DevTools:Unleash Vue Developer Experience. Enhance your Vue development journey with an amazing experience! 典型的功能特征包…

6.3.3分离音频和视频

6.3.3分离音频和视频 Camtasia4有一个很实用的功能,那就是能够把视频片段中的视频和音频分离开来,这在多媒体作品创作中非常有用。 1.启动Camtasia音频编辑器。 2.选择【文件】|【打开】命令,在弹出的“打开文件”对…

法国追梦 SAM5504/5704/5716/5808 芯片/开发板/方案 详细资料

追梦音频DSP芯片:可用于电子鼓、电子琴、电吉他、效果器、均衡器、啸叫抑制器等电声产品领域 一.系列芯片:SAM2695 SAM5708B SAM5704B SAM5504B SAM5808B SAM5716B SAM5916B 二.开发套件 1.开发板/评估板:2695-EK,5504-EK&#…

Kali Linux保姆级教程|零基础从入门到精通,看完这一篇就够了!(附工具包)

作为一名从事网络安全的技术人员,不懂Kali Linux的话,连脚本小子都算不上。 Kali Linux预装了数百种享誉盛名的渗透工具,使你可以更轻松地测试、破解以及进行与数字取证相关的任何其他工作。 今天给大家分享一套Kali Linux资料合集&#xf…

考研机试题收获——高精度进制转换

代码的第一遍真的很重要,在第一次打的时候尽量把问题思考全面,不要漏打少打,尽量不要留bug给之后de。 一、基础方面 一、处理输出的结束问题 scanf和cin默认都不会读取空格 ①scanf():如果从文件中读取数据,当scanf()…

计算机三级(网络技术)——应用题

第一题 61.输出端口S0 (直接连接) RG的输出端口S0与RE的S1接口直接相连构成一个互联网段 对172.0.147.194和172.0.147.193 进行聚合 前三段相同,将第四段分别转换成二进制 11000001 11000010 前6位相同,加上前面三段 共30…

Vue3 + Electron框架读取程序外部配置文件

网上找了一堆都不行,根据这个步骤来肯定能用 1. 在项目下新建一个config.json文件 2. json文件中写入一些配置 3. vue.config.js中配置打包时把config.json文件copy到应用目录下 pluginOptions:{electronBuilder:{nodeIntegration:true,builderOptions: {extraReso…

VUE好看的个人博客源码

文章目录 1.设计来源1.1 首页界面1.2 我的日记界面1.3 我的文章界面1.3.1 文章列表1.3.2 文章时间轴1.3.3 文章详细 1.4 我的相册界面1.5 我的源码界面1.6 认识我界面 2.效果和源码2.1 动态效果2.2 源码目录结构 源码下载 作者:xcLeigh 文章地址:https:/…

在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型

在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型 0. 背景1. 安装依赖2. 开发 main.py3. 运行 main.py 0. 背景 看了一些文章之后,今天尝试在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型。 1. 安装依赖 pip install torch torchvision …