【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十三)

课程地址: 黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发

(本篇笔记对应课程第 20 - 21节)

P20《19.ArkUI-属性动画和显式动画》

在这里插入图片描述
本节先来学习属性动画和显式动画:

在代码中定义动画,我们只需要定义好动画的起始状态和终止状态,ArkUI就会自动帮我们填充中间的动画状态,如下定义起始状态和终止状态:
在这里插入图片描述

1、属性动画:属性动画 animation() 需要注意:

(1)animation() 属性方法必须写在需要设置动画效果的样式语句之后,如下图animation()属性方法需要写在 position() 与 rotate() 之后,否则会没有效果;
(2)animation() 属性方法只会对一些特定的属性生效,如 width、height、opacity、backgroundColor、scale、rotate、translate 等属性;
(3)animation() 属性方法需要传递的参数如下:

在这里插入图片描述

下面来做一个“小鱼动画”的案例:添加一个“小鱼动画”的页面。

在这里插入图片描述
页面静态代码与效果如下:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

用 animation() 属性动画的方式给小鱼图片添加动画效果,同时添加方向键控制小鱼坐标位置语句:

在这里插入图片描述

向左和向右时切换图片以保证小鱼头部朝前:

在这里插入图片描述

2、显式动画:通过全局 animateTo() 函数修改组件属性

在这里插入图片描述

在小鱼案例中使用全局 animateTo() 函数实现动画效果:animateTo() 是一个全局函数,可以直接调用:

在这里插入图片描述

总结:
本节主要讲了两种实现动画的方式:
1、属性动画:调用属性方法 animation()
2、显式动画:调用全局公共方法 animateTo()
第二种方式用得更普遍。

实践:

实践遇到的问题如下:

1、报错,仔细观察发现老师定义的小鱼图片src变量类型是 Resource,不是 ResourceSrc。改为 Resource后报错消失:

在这里插入图片描述

2、设置背景图大小与位置,尝试了几个相关属性:

在这里插入图片描述

通用属性文档查询:通用属性文档
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/ts-universal-attributes-opacity-0000001427902432-V2

3、“The component you have selected is not displayed on the preview” 小鱼图片不显示,原因不明。更换webp格式图片为png格式图片,可以显示了。但之前案例中我使用过webp格式图片,显示正常。这里这个问题暂时不明白什么原因。

在这里插入图片描述

4、这个问题也很奇葩:animation() 对小鱼位置变化添加不上动画效果,只对向左和向右时切换小鱼图片src可以添加上动画效果。原因暂时没弄明白。

在这里插入图片描述

P21《20.ArkUI-组件转场动画》

在这里插入图片描述

想让组件具有插入或移除时的转场效果,就需要让组件有插入和移除的情景,比如条件渲染组件:

在这里插入图片描述
使用转场动画给小鱼添加动画效果:

1、第一步:给小鱼图片添加 transition() 入场动画效果:

在这里插入图片描述

第二步:在小鱼图片组件显示时添加 animateTo 函数控制:

在这里插入图片描述

页面间的转场动画效果可以查看官方文档:

在这里插入图片描述

实践:

本节实践代码:


import router from '@ohos.router'@Styles function btnStyle(){.backgroundColor('rgba(0,0,0,0.2)')
}@Entry
@Component
struct AnimationPage {// 小鱼坐标@State fishX: number = 200@State fishY: number = 180// 小鱼角度@State angle: number = 0// 小鱼图片@State src:Resource = $r('app.media.fish')// 是否开始游戏@State isBegin:boolean = falsebuild() {Row() {Column() {Stack(){// 返回按钮Button('返回').position({x:0,y:0}).btnStyle().onClick(()=>{router.back()})// 开始游戏按钮if(!this.isBegin){Button('开始游戏').onClick(()=>{animateTo({duration:1000},()=>{this.isBegin = true})})}else{// 小鱼图片Image(this.src).width('80').position({x: this.fishX - 40, y: this.fishY - 40})// .animation({duration:500, tempo:1}).transition({type:TransitionType.Insert,opacity:0,translate:{x: -200}})}// 操作按钮Row(){Button('←').btnStyle().type(ButtonType.Circle).onClick(()=>{animateTo({ duration:500 },()=>{this.src = $r('app.media.fish_left')this.fishX -= 40})})Column({space:20}){Button('↑').btnStyle().type(ButtonType.Circle).onClick(()=>{animateTo({duration:500},()=>{this.fishY -= 40})})Button('↓').btnStyle().type(ButtonType.Circle).onClick(()=>{animateTo({duration:500},()=>{this.fishY += 40})})}Button('→').btnStyle().type(ButtonType.Circle).onClick(()=>{animateTo({ duration:500 },()=>{this.src = $r('app.media.fish')this.fishX += 40})})}.width(120).position({x:10,y:250}).justifyContent(FlexAlign.Center)}.width('100%').height('100%')}.width('100%').height('100%')}.width('100%').height('100%').backgroundImage($r('app.media.fish_bg'),ImageRepeat.NoRepeat).backgroundImageSize(ImageSize.Cover).backgroundImagePosition(Alignment.Bottom)}
}

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

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

相关文章

【学习笔记】Linux前置准备

视频学习资料 基础: 黑马0基础(前面四章即可,包含软件基础安装配置) 进阶: 黑马程序员-Linux系统编程 黑马程序员-Linux网络编程 我也还没看,看了眼目录感觉把八股里面很多场景都讲到了,感觉有…

mysql自带分页

select 查询列表 from 表 limit offset,pagesize; offset代表的是起始的条目索引,默认从0开始size代表的是显示的条目数offset(n-1)*pagesize -- 第-页 limit 0 5 -- 第二页 limit 5,5 -- 第三页 limit 10,5 -- 第n页limit(n-1)*pagesize,pagesize -- pages…

在keil5中打开keil4工程的方法

文章目录 1. 打开文件 2. 安装旧版本包 3. 在keil4中打开keil5工程 1. 打开文件 在keil5 MDK的环境下,打开keil4的工程文件,会弹出下图所示的窗口: 参考官网的解释这两个方法分别为: 1. 使用MDK 版本 4 Legacy Pack时&#x…

Android 高德地图API(新版)

新版高德地图 前言正文一、创建应用① 获取PackageName② 获取调试版安全码SHA1③ 获取发布版安全码SHA1 二、配置项目① 导入SDK② 配置AndroidManifest.xml 三、获取当前定位信息① ViewBinding使用和导包② 隐私合规设置③ 权限请求④ 初始化定位⑤ 获取定位信息 四、显示地…

electron打包时资源下载失败cannot resolve xxx/30.0.9/electron-v30.0.9-win32-ia32.zip

同学们可以私信我加入学习群! 正文开始 问题描述解决方案总结 问题描述 最近electron更新频繁,而我在用electron做个人项目,对稳定性没有太高要求,希望保持着electron的最新版本,所以就没有固定版本。 单位网络不太好…

抽象类和抽象方法(abstract)

1. 抽象类和抽象方法(abstract)的基本代码 用关键字abstract修饰的类称为abstract类(抽象类)。 例如: abstract class A {//......} 用关键字abstract修饰的方法称为abstract方法(抽象方法) 例如: abstract int min(int x,int y); 2. abstract类有如下特点 ●和普通的类相…

【MySQL】(基础篇一)—— SQL介绍和前置知识

我将会写一系列关于MySQL的博客,我会详细为你讲解数据库的知识以及MySQL的各种功能 数据的所有存储、检索、管理和处理实际上是由数据库软件——DBMS(数据库管理系统)完成的。MySQL是一种DBMS(DataBase Manager Software&#xf…

Docker镜像加载原理(Union文件系统)

联合文件系统 Union文件系统,是一种轻量级的分层高性能服务系统,支持对文件系统的修改来进行一层一层的叠加,同时将不同目录挂载到同一个虚拟文件系统中,Union文件系统是Docker镜像的基础,通过分层来进行集成&am…

[第五空间 2021]WebFTP、[HCTF 2018]Warmup

目录 [第五空间 2021]WebFTP ​[SWPUCTF 2021 新生赛]Do_you_know_http [NCTF 2018]签到题 [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [HCTF 2018]Warmup [第五空间 2021]WebFTP 使用dirsearch扫描,发现有git泄露 使用GitHack克隆目…

Docker安装、使用,容器化部署springboot项目

目录 一、使用官方安装脚本自动安装 二、Docker离线安装 1. 下载安装包 2. 解压 3.创建docker.service文件 4. 启动docker 三、docker常用命令 1. docker常用命令 2. docker镜像命令 3. docker镜像下载 4.docker镜像push到仓库 5. docker操作容器 6.docker …

轻松实现文件随机提取:从众多文件夹中智能筛选指定数量文件,一键移至目标文件夹!

在信息爆炸的时代,电脑中的文件越来越多,整理起来却越来越头疼。你是否也曾在海量的文件夹中迷失,苦苦寻找那个特定的文件?你是否也曾为了将文件从一个文件夹移动到另一个文件夹而耗费大量时间?现在,我们为…

【实用技巧】Unity的InputField组件实用技巧

Unity的InputField组件非常灵活,提供了多种实用技巧来增强用户体验和开发效率。以下是一些有用的技巧: 1. 监听输入变化 使用OnValueChanged事件来监听用户输入的变化,这可以用于实时验证或更新UI。 inputField.onValueChanged.AddListene…

开发一个Dapp需要多少?

区块链开发一个Dapp要多少钱? 开发一个去中心化应用(Dapp)的成本取决于多个因素,包括Dapp的复杂性、功能需求、区块链平台以及开发团队的经验水平。以下是一些主要的影响因素: 1. 区块链平台:不同区块链…

《十八岁出门远行》世界很小,案牍劳形;世界很大,日短心长

《十八岁出门远行》世界很小,案牍劳形;世界很大,日短心长 余华,作家,著有《在细雨中呼喊》《活着》《文城》《兄弟》等。 文章目录 《十八岁出门远行》世界很小,案牍劳形;世界很大,日…

游戏心理学Day07

第二节学习 社会学习理论 按照条件反射的理论,个体行为的学习都是通过奖励或惩罚达到目的的 美国心理学家阿尔伯特班杜拉提出了社会学习理论,探讨个人的认知,行为与环境因素,三者及其交互作用,对人类行为的影响 记…

2048小游戏的菜鸡实现方法

# 2048小游戏的实现与分析 2048是一款非常受欢迎的数字滑块游戏,其目标是通过滑动和合并相同数字的方块来创建一个值为2048的方块。下面,我们将通过分析一个C语言实现的2048小游戏的源代码,来探索如何用编程实现这款游戏。 ## 游戏概述 20…

C++学习/复习13--list概述

一、list概念 1.带头双向链表 2.构造函数 3.迭代器(其迭代器需尤其注意) 4、size 5.front/back 6.插入删除 删除时的迭代器失效 由于list的节点特殊,既有数据又有指针,其实现需要节点/迭代器/list各成一类再组合

Linux网络编程——概念及实现双方聊天

网络编程的场景: 假设你面前有五座房子(服务器),你要走到其中一座房子的某一间,此时你站在五座房子面前很迷茫,突然,第二座房子上面有人在叫,并且用汉语(TCP/UDP&#xf…

【Framework系列】Excel转Json,配置表、导表工具介绍

今天来介绍一下Framework系列的配置部分,这一部分归属于Framework-Design之中。读过《Framework系列介绍》的小伙伴应该了解整个Framework框架是由多个工程项目组成,没看过的小伙伴可以点击链接了解一下。 Framework-Design设计的初衷是给策划同学用的&a…

上市公司绿色并购数据+do文件(1996-2024.4)

数据简介:手工搜集重污染上市公司的并购公告,采用内容分析法,对每次并购的背景和目的,主并企业和标的企业经营范围以及该次并购对主并企业带来的影响进行综合分析,逐一判断该项并购事件是否为绿色并购 时间跨度&#…