Compose动画

一、Compose动画种类和选择

1.1 选择动画API

1.采用SVG:AnimatedVectorDrawable

是否第三方动画框架:Lottie动画

2.是否需要永久播放:rememberInfiniteTransition

3.布局动画

在内容不同的多个可组合项之间切换

3.1 导航过渡动画:Navigation Compose 是:composable()(已设置 enterTransition 和 exitTransition

3.2 属性添加动画效果

组件属性动画效果:AnimatedVisibility或animateFloatAsState和Modifier.alpha()

尺寸添加动画效果:Modifier.animateContentSize

列表项动画:animateItemPlacement()(即将推出重新排序和删除功能)

4.属性集动画效果(AnimationSet)

4.1 各个属性是否完全相互独立: 支持:animate*AsState;对于文字,请使用 TextMotion.Animated

要同时开始: 支持:updateTransition,AnimatedVisibilityanimateFloatanimateInt 等

不同时开始:使用挂起函数,以不同的时间调用 animateTo 的 Animatable

4.2 动画是否具有一组预定义的目标值

支持:animate*AsState;对于文字,请使用 TextMotion.Animated

手势驱动的动画:是:Animatable 人,animateTo 人,共 snapTo 人

没有状态管理的单次动画?是:AnimationState或 animate

二、属性添加动画效果

2.1 AnimatedVisibility

可见性添加动画效果。

/*** 对AnimatedVisibility动画** @author zhouronghua* @time 2024/9/21 14:25*/
@Composable
fun AnimateVisibilityView(modifier: Modifier = Modifier) {Column(modifier = modifier.fillMaxWidth()) {// 可见性状态var isVisible by remember { mutableStateOf(false) }AnimatedVisibility(visible = isVisible) {Box(modifier = Modifier.size(200.dp).background(Color.Blue))}Button(onClick = {// 切换可见性状态值isVisible = !isVisible}) {Text(text = "可见动画")}}
}

点击按钮,Box会纵向进行收起和展开,展示动画效果。

2.1.2 增加进入和淡出效果

AnimatedVisibility支持叠加进入动画效果 enter和退出动画效果 exit 

/*** 对AnimatedVisibility动画+叠加进入和退出效果** @author zhouronghua* @time 2024/9/21 14:25*/
@Composable
fun AnimateVisibilityFadeInView(modifier: Modifier = Modifier) {Column(modifier = modifier.fillMaxSize()) {// 可见性状态var isVisible by remember { mutableStateOf(false) }Button(onClick = {// 切换可见性状态值isVisible = !isVisible}) {Text(text = "可见动画")}// AnimatedVisibility叠加进入和退出效果AnimatedVisibility(visible = isVisible,enter = slideInHorizontally() + fadeIn(), // 横向滑入+淡入效果exit = slideOutHorizontally() + fadeOut(), // 横向滑出+淡出效果modifier = Modifier.fillMaxWidth().weight(1f)) {Box(modifier = Modifier.background(Color.Blue))}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

154-钓鱼篇Offfice-CVE漏洞RLO隐藏压缩包释放免杀打包捆绑

#知识点: 1、文件名-RLO 伪装-后缀 2、压缩文件-自解压-运行 3、捆绑文件-打包加载-运行 4、Office 套件-漏洞钓鱼-CVE #文件后缀-钓鱼伪装-RLO cs生成一个exe后门 重命名为一个png反过来或者jpg反过来的名字 然后再g前面输入其他字符在g字符前面右键选择这个插入…

CUDA-事件计时方法cudaEventElapsedTime

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 实现原理 事件计时方法是CUDA编程中一种用于测量GPU内核执行时间的高效手段。其基本步骤包括: 创建事件:…

Python模拟鼠标轨迹[Python]

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。 二.鼠标轨迹算法实…

echarts柱图

样式如下 关键代码 // html部分<div class"echarts-container" :id"echartDiv id"></div>// js部分 data() {return {myChart: null,xAxisData: [云南, 浙江, 山东, 广东, 四川, 河南, 广西, 河南, 广西],yAxisData: [{value: 230,num: {r…

超实用线程调度方法!

文章目录 前言一、实现思路二、实现实例三、实现效果 前言 你有想过这样一个问题吗&#xff1f;线程之间是如何调度的&#xff1f; 更具体点说是这样&#xff0c;有两个线程&#xff1a;线程A和线程B&#xff0c;线程B要先于线程A运行&#xff0c;或者是线程B运行了多次之后在…

2024年华为杯中国研究生数学建模竞赛F题保姆级教程思路分析

2024年中国研究生数学建模竞赛F题保姆级教程思路分析 F题题目&#xff1a;X射线脉冲星光子到达时间建模 本题目围绕脉冲星导航与X射线光子到达时间建模展开。脉冲星由于其自转稳定性和规律性&#xff0c;被认为是宇宙中精确的时钟&#xff0c;并可以用作航天器的定位和导航基…

Ubuntu 22.04 源码下载、编译

Kernel/BuildYourOwnKernel - Ubuntu Wikihttps://wiki.ubuntu.com/Kernel/BuildYourOwnKernel 一、查询当前系统内核版本 rootubuntu22:~# uname -r 5.15.0-118-generic 二、查询本地软件包数据库中的内核源码信息 rootubuntu22:~# apt search linux-source Sorting... Do…

使用Maven创建一个Java项目并在repository中使用

JDK环境&#xff1a;1.8.0_371 Maven环境 &#xff1a;Apache Maven 3.6.3 配置完成jdk和mvn后&#xff0c;进入到指定文件夹下执行如下语句&#xff1a; mvn archetype:generate -DgroupIdtop.chengrongyu -DartifactIdCyberSpace -DarchetypeArtifactIdmaven-archetype-quic…

(20)Shell脚本的书写

linux中的shell脚本&#xff0c;其实是系统中真正的命令。Shell语言写的程序不需编译.定义各种参数和变量、使用条件命令、控制结构以及其他高级特性。 一、shell脚本基本元素 1.1变量 定义&#xff1a;定义一个名称&#xff0c;将参数赋予给这个名称。就叫变量。变量名可以…

C++【类和对象】(一)

文章目录 前言1.类的定义1.1类定义格式1.2 访问限定符1.3 类域 2. 实例化2.1 实例化的概念2.2 对象大小 3.this指针结语 前言 在前文我们讲解了C基础语法知识。本文将会讲解C的类和对象。 1.类的定义 1.1类定义格式 class name {}&#xff1b;class为定义类的关键字&#x…

Linux进阶命令-rsync

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 经过上一章Linux日志的讲解&#xff0c;我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令&am…

erlang学习:Linux常用命令2

目录操作命令 对目录进行基本操作 相关cd切换目录之类的就直接省去了&#xff0c;以下操作中都会用到 查看当前目录下的所有目录和文件 ls 列表查看当前目录下的所有目录和文件&#xff08;列表查看&#xff0c;显示更多信息&#xff09; ls -l 或 ll 在当前目录下创建一个…

高性能并发计数器的比较

参考文档&#xff1a;https://baijiahao.baidu.com/s?id1742540809477784106&wfrspider&forpc 一、常用的并发计数方法 1、synchronized synchronized早期是一个重量级锁&#xff0c;因为线程竞争锁会引起操作系统用户态和内核态切换&#xff0c;浪费资源&#xff…

Element Plus中button按钮相关大全

一、基本用法 使用 type、plain、round 和 circle 来定义按钮的样式。 样式代码如下&#xff1a; <template><div class"mb-4"><el-button>Default</el-button><el-button type"primary">Primary</el-button><el…

C语言常见字符串函数模拟实现一

strlen模拟实现 重点&#xff1a;1.字符串已经\0作为结束标志&#xff0c;strlen返回的是字符串\0前面出现的字符个数&#xff08;不包含\0&#xff09; 2.参数指向的字符串必须要以\0结束。 3.注意函数的返回值是size_t&#xff0c;是无符号的&#xff0c;加减是无法对比的。…

卡西欧相机SD卡格式化后数据恢复指南

在数字摄影时代&#xff0c;卡西欧相机以其卓越的性能和便携性成为了众多摄影爱好者的首选。然而&#xff0c;随着拍摄量的增加&#xff0c;SD卡中的数据管理变得尤为重要。不幸的是&#xff0c;有时我们可能会因为操作失误或系统故障而将SD卡格式化&#xff0c;导致珍贵的照片…

数据类型转换中存在的问题分析

隐式类型转换&#xff08;implicit type conversion&#xff09; 隐式类型转换&#xff08;implicit type conversion&#xff09;包括整型提升&#xff08;integer promotion&#xff09;和标准算数转换&#xff08;usual arithmetic conversions&#xff09; 遵循较大范围优…

堡垒机(Bastion Host)概述

Bastion Host 堡垒机 一、什么是堡垒机&#xff1f; A bastion host is a computer specially designed to mitigate cyberattacks and manage access rights to an internal network. 堡垒机Bastion Host是一种专门设计用于缓解网络攻击并管理内部网络访问权限的计算机。 在…

肖扬新书《微权力下的项目管理》读书笔记2

一个核心思想&#xff1a;“借力” 合格的项目经理是不热衷于培养人的。项目经理的工作场景和职能经理的工作场景往往有很 大不同。职能经理的工作方式通常适用于常态化工作&#xff0c;要有足够的时间去培养人&#xff0c;先把人培 养起来&#xff0c;然后再干事&#xff0c;可…

加油卡APP定制搭建,让加油更便捷!

在汽车时代中&#xff0c;汽车的数量不断增加&#xff0c;加油已经成为了大众生活中不可缺少的一部分。同时&#xff0c;加油卡的出现也为大众的汽车加油提供了更多的优惠方式&#xff0c;为大众节省经济开支&#xff0c;为车主带来便利&#xff1b;同时加油卡的发展也提高了加…