HarmonyOS 通过 animateTo讲解尺寸动画效果

news/2024/7/21 8:20:10 标签: harmonyos, 华为, 鸿蒙

上文 HarmonyOS讲解并演示 animateTo 动画效果 我们已经做出了基本的动画效果
也对 animateTo 的使用比较熟悉了
第一个参数是 配置动画参数的json 第二个参数 则是改变我们元素属性值的事件
但属性值 远远不止位置属性

本文 我们来说 通过尺寸变化 完成动画效果

如果你有看过我的上文
其实我说的这个你应该会觉得非常简单的
只需要在第二个参数中的箭头函数中 去改变元素宽高属性就OK了

我们 可以直接将代码写成这样

@Entry
@Component
struct Index {

  @State ymWidth: number = 100;
  @State ymHeight: number = 50;

  build() {
    Column({space: 30}) {
      Text("修改元素尺寸")
        .fontSize(38)
        .margin({top:188})
      Button()
        .width(this.ymWidth)
        .height(this.ymHeight)

      Button("执行").onClick((event: ClickEvent) => {
        animateTo({
          duration: 3000,
          curve: Curve.Linear,
          //delay: 2000,
          iterations: 3,
          playMode: PlayMode.Alternate,
          onFinish: (()=>{
            console.log("动画结束");
          })
        },() => {
          this.ymWidth = 350
          this.ymHeight = 300
        })
      })
  }
    .width('100%')
    .height('100%')
  }
}

这里 我们直接定义了 ymWidth 和 ymHeight 都是 number 数值类型
然后写了一个 button 用 ymWidth 和 ymHeight 控制它的高度和宽度
然后下面按钮点击事件 调用 animateTo
第二个参数中 将 ymWidth 和 ymHeight 都加大
然后 我们第一个参数 json中和上文说的都是一样的

duration 动画总用时 控制在 3000毫秒 就是三秒
curve 用 Linear 整个动画匀速进行
iterations 动画重复 3次
playMode 模式设置 Alternate 就是会执行完动画 再折返一次 例如 我们上文中是动画到最右侧 然后 还会从最右侧回到最左侧
这里 我们的效果就是放大之后 还会缩小回来

我们运行代码
在这里插入图片描述
点击执行 文案的按钮后 中心的button 就会放大 然后因为PlayMode.Alternate, 每次放到最大 还会瘦小回去 直到最后一次动画执行完 他就不会瘦小回去了
在这里插入图片描述


http://www.niftyadmin.cn/n/5324704.html

相关文章

电流检测方法

电路检测电路常用于:高压短路保护、电机控制、DC/DC换流器、系统功耗管理、二次电池的电流管理、蓄电池管理等电流检测等场景。 对于大部分应用,都是通过感测电阻两端的压降测量电流。 一般使用电流通过时的压降为数十mV~数百mV的电阻值&…

flink中的row类型详解

在Apache Flink中,Row 是一个通用的数据结构,用于表示一行数据。它是 Flink Table API 和 Flink DataSet API 中的基本数据类型之一。Row 可以看作是一个类似于元组的结构,其中包含按顺序排列的字段。 Row 的字段可以是各种基本数据类型&…

C# 静态代码织入AOP组件之肉夹馍

写在前面 关于肉夹馍组件的官方介绍说明: Rougamo是一个静态代码织入的AOP组件,同为AOP组件较为常用的有Castle、Autofac、AspectCore等,与这些组件不同的是,这些组件基本都是通过动态代理IoC的方式实现AOP,是运行时…

es6导入导出语法,vue-router简单使用,登录跳转案例,scoped的使用

es6导入导出语法 默认导出和导入 导出语法 只导出变量:export default name 只导出函数:export default add 导出对象:export default {name,add} export default { name:"彭于晏", add: (a,b)>{ return …

mysql原理--redo日志1

1.redo日志是个啥 我们知道 InnoDB 存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作)。我们前边唠叨 Buffer Pool 的时候说过,在真正访问页面之前&a…

Netty开篇——基础介绍与准备(一)

I/O篇 Netty的介绍 Netty 是由JBOSS提供的一个Java开源框架在Github上Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序。Netty 主要针对在TCP协议下面向客户端的高并发应用,或者Peer-to-Peer/P2P场景下的大量…

(十二)EEPROM的补充

文章目录 EEPROM补充篇读EEPROM补充内容写EEPROM补充内容单字节写入多字节拆成单字节写入现象 EEPROM补充篇 读EEPROM补充内容 对于上一篇博文在读EEPROM的时候,提到的DUMMY WRITE: 这里怎么理解呢: 大家看,写EEPROM的逻辑除了…

从CES 2024看AI PC江湖

被称为消费电子“春晚”的CES,是科技行业在每一个新的年份,所敲响的第一个钟声。 今年CES 2024,AI PC则发出了“最强音”,是当之无愧的C位。 科技巨头都高度重视AI PC这个赛道,产业链上下游从芯片、设备商、系统软件方…