当前位置: 首页 > news >正文

「Mac畅玩鸿蒙与硬件17」鸿蒙UI组件篇7 - Animation 组件基础

在应用开发中,动画效果可以增强用户体验。鸿蒙框架提供了 translatescalerotate 等动画功能,允许对组件进行平移、缩放和旋转等操作。本篇将介绍 Animation 组件的基础知识和示例代码。

在这里插入图片描述


关键词
  • Animation 组件
  • 动画效果
  • 位置动画
  • 自动动画
  • 缩放动画

一、Animation 组件概述

鸿蒙的 Animation 组件支持多种动画效果,如平移、缩放和旋转。通过动态控制这些属性的变化,可以实现组件在界面中的流畅动画效果。以下实例演示这些基础动画的实现。


二、创建简单动画
2.1 自动位移动画

通过 translate 属性实现组件的自动平移效果,可以控制 xy 轴的偏移量,使组件自动左右或上下移动。定时器可用于定期触发动画。

@Entry
@Component
export struct AutoTranslateAnimation {@State private x: number = 0build() {Column() {// 图片组件,应用平移动画Image($r('app.media.cat')).width(305).height(360).translate({ x: this.x }) // 根据 x 状态变量实现水平平移.transition({ opacity: 0.5 }) // 设置透明度过渡效果Button('开始自动移动').onClick(() => this.startAutoMove()) // 按钮开始自动动画}.width('100%').height('100%').alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center)}// 定义自动平移函数startAutoMove() {setInterval(() => {this.x = this.x === 0 ? 200 : 0; // 切换位置}, 1000); // 每1秒切换位置,实现自动平移}
}

效果示例:点击“开始自动移动”按钮后,图片每隔 1 秒在 x 轴上来回移动。

在这里插入图片描述


2.2 自动缩放动画

通过 scale 属性设置组件的自动缩放比例,控制 xy 轴的比例可以实现放大或缩小效果。

@Entry
@Component
export struct AutoScaleAnimation {@State private scale1: number = 1build() {Column() {// 图片组件,应用缩放动画Image($r('app.media.cat')).width(305).height(360).scale({ x: this.scale1, y: this.scale1 }) // 根据 scale1 实现缩放效果.transition({ opacity: 0.8 }) // 设置透明度过渡效果.margin(50)Button('开始自动缩放').onClick(() => this.startAutoScale()) // 按钮开始自动缩放动画}.width('100%').height('100%')}// 定义自动缩放函数startAutoScale() {setInterval(() => {this.scale1 = this.scale1 === 1 ? 1.5 : 1; // 切换缩放比例}, 1000); // 每1秒切换缩放,实现自动缩放}
}

效果示例:点击“开始自动缩放”按钮后,图片每隔 1 秒在 1 倍和 1.5 倍之间切换。

在这里插入图片描述


2.3 自动旋转动画

通过 rotate 属性控制组件的旋转角度,结合定时器可以实现自动旋转效果。

@Entry
@Component
export struct AutoRotateAnimation {@State private rotation: number = 0build() {Column() {// 图片组件,应用旋转动画Image($r('app.media.cat')).width(305).height(360).rotate({ angle: this.rotation }) // 根据 rotation 实现旋转效果.transition({ opacity: 0.8 }) // 设置透明度过渡效果.margin(50)Button('开始自动旋转').onClick(() => this.startAutoRotate()) // 按钮开始自动旋转动画}.width('100%').height('100%').alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center)}// 定义自动旋转函数startAutoRotate() {setInterval(() => {this.rotation += 45; // 每次增加45度实现旋转}, 1000); // 每1秒旋转一次}
}

效果示例:点击“开始自动旋转”按钮后,图片每隔 1 秒顺时针旋转 45 度。

在这里插入图片描述


三、组合自动动画示例

可以通过同时控制 translatescalerotate 属性,实现多个动画效果的自动组合,创建更复杂的视觉效果。

@Entry
@Component
export struct AutoCombinedAnimationComponent {@State private x: number = 0@State private scale1: number = 1@State private rotation: number = 0build() {Column() {// 图片组件,应用组合动画效果Image($r('app.media.cat')).width(305).height(360).translate({ x: this.x }) // 平移.scale({ x: this.scale1, y: this.scale1 }) // 缩放.rotate({ angle: this.rotation }) // 旋转.transition({ opacity: 0.8 }) // 设置透明度过渡效果.margin(50)Button('开始自动组合动画').onClick(() => this.startAutoCombinedAnimation()) // 按钮触发自动组合动画}.width('100%').height('100%').alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center)}// 定义自动组合动画函数startAutoCombinedAnimation() {setInterval(() => {this.x = this.x === 0 ? 50 : 0; // 切换位置this.scale1 = this.scale1 === 1 ? 1.5 : 1; // 切换缩放比例this.rotation += 45; // 每次增加旋转角度}, 1000); // 每1秒切换动画效果}
}

效果示例:点击“开始自动组合动画”按钮后,图片将每隔 1 秒自动产生平移、缩放和旋转的组合动画效果。
在这里插入图片描述


小结

本篇介绍了鸿蒙 Animation 组件的基础用法,并通过多个实例展示了 translatescalerotate 等动画效果的实现。通过合理运用这些基础动画,可以轻松创建自动化的动画效果,让界面更加生动有趣。


下一篇预告

下一篇将深入探讨高级动画效果和缓动控制,学习如何创建更自然的动画效果,进一步提升界面表现力。


上一篇: 「Mac畅玩鸿蒙与硬件16」鸿蒙UI组件篇6 - List 和 Grid 组件展示数据列表
下一篇: 「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制


http://www.mrgr.cn/news/65197.html

相关文章:

  • blender导入的图片渲染看不见,图片预览正常,但渲染不出
  • 模板规则明细
  • 红黑树的平衡之舞:数据结构中的优雅艺术
  • 如何封装一个axios,封装axios有哪些好处
  • Python pyautogui库:自动化操作的强大工具
  • 强化学习原理:基本概念
  • 洛谷纸币问题123
  • Maven(26)如何使用Maven进行持续集成?
  • 「Mac畅玩鸿蒙与硬件16」鸿蒙UI组件篇6 - List 和 Grid 组件展示数据列表
  • C#与C++交互开发系列(二十):跨进程通信之共享内存(Shared Memory)
  • C++中的模版初识
  • 服务器技术(一)--Linux基础入门
  • 克服奖励欺骗:Meta发布全新后训练方式CGPO,编程水平直升5%,打破RLHF瓶颈
  • 哈尔滨华时信息技术有限公司,特色之处见怎么样
  • Go并发编程之原子操作syncatomic
  • YOLO11论文 | 重要性能衡量指标、训练结果评价及分析及影响mAP的因素【发论文关注的指标】
  • 一文搞懂Apk的各种类型
  • Verilog HDL基础
  • 基于web的中小学成绩管理系统的设计与实现
  • Web-高校教务考试管理系统
  • 用户程序发出磁盘IO请求后,系统的处理流程
  • 供应SW1102集成氮化镓直驱的准谐振模式反激控制IC
  • Go:struct结构体和继承
  • 华为独家揭秘:AI时代产品经理成长宝典——《人工智能产品经理》168页首发
  • 遗传算法与深度学习实战(21)——使用差分搜索自动超参数优化
  • 供应SW1108P集成氮化镓直驱的高频准谐振IC