Android Compose Transition 动画

Transition 是一种动画效果,用于在组件的状态之间进行平滑的过渡。它可以帮助我们在状态变化时,以一种流畅的方式更新 UI。通过使用 Compose 的 Transition API,您可以在应用中创建各种各样的动画效果,从而增强用户体验并提高应用的吸引力。


在 Compose 中推荐使用 updateTransition 来创建 Transition 动画,因为可以进行预览。

用法:

@Preview(showBackground = true)
@Composable
fun MyScreen() {var isVisible by remember { mutableStateOf(true) }val transition = updateTransition(targetState = isVisible, label = "kang")val colorAnimate by transition.animateColor(transitionSpec = { tween(300) }, label = "colorAnimate") {if (it) Color(0xFF03A9F4) else Color(0xFFFFEB3B)}val dpAnimate by transition.animateDp(transitionSpec = { tween(300) }, label = "dpAnimate") {if (it) 0.dp else 25.dp}val sizeAnimate by transition.animateSize(transitionSpec = { tween(300) }, label = "sizeAnimate") {if (it) Size(150f, 60f) else Size(270f, 50f)}Column(modifier = Modifier.fillMaxWidth().padding(16.dp),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {Box(modifier = Modifier.size(sizeAnimate.width.dp, sizeAnimate.height.dp).background(colorAnimate, RoundedCornerShape(dpAnimate)).clickable(interactionSource = MutableInteractionSource(), indication = null) {isVisible = !isVisible}.padding(15.dp),contentAlignment = Alignment.Center) {Text(text = "Hello, wk灬丨!", color = Color.Gray)}}
}

代码直接贴上去之后点击 Split 就可以直接进行预览了:


在最新的 Android Studio 使用 updateTransition 可以进行 Compose 动画预览。点击:


之后出现的画面就是 compose 的动画预览页了,下面的进度条可以拖动进行动画预览


也可以展开动画预览它的曲线:

 虽然预览能够很清晰的看到具体的曲线和动画变换的过程,但是非常可以不能编辑,若能在如此详细的预览页能够编辑,那每一位开发制作动画都非常方便了(甚至有点视频剪辑的感觉)

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

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

相关文章

Axure元件库使用与ProcessOn流程图

Axure元件库 自定义Axure元件库: 打开Axure RP软件,并点击菜单栏中的“元件库”选项,选择“新建元件库”。 在弹出的对话框中,选择一个文件夹来保存您的自定义元件库,并给它一个名称。 在Axure RP的主界面上&#x…

四、Java流程控制

第一章 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 …

低频量化日报

低频量化日报&#xff08;2023-12-13&#xff09; 明日涨停预测指数分位值指数风险溢价比ETF抄底指标<2小规模配债<5亿可转债策略 双低策略四因子策略网格策略最后 写在前面&#xff0c; 由于git服务器的缘故&#xff0c;原来自动写文章的图片全部不能用了&#xff0c; 我…

【解决】maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题...

问题描述&#xff1a; 调用第三方接口的时候通过手动引入了第三方的两个jar包到我本项目的lib文件夹下&#xff0c;并在pom文件添加入下配置&#xff1a; <dependency><groupId>cn.xxxx.xxxx.core</groupId><artifactId>xxxx-core</artifactId>…

机器学习---逻辑回归算法

1、逻辑回归 逻辑回归又叫logistic回归分析&#xff0c;是一种广义的线性回归分析模型。线性回归要求因变量必须是连续性的数据变量&#xff0c;逻辑回归要求因变量必须是分类变量&#xff0c;可以是二分类或者多分类(多分类都可以归结到二分类问题)&#xff0c;逻辑回归的输出…

深入理解 Go 语言 Goroutine 的工作原理

一、设计思路 1、设计描述 启动服务之时先初始化一个 Goroutine Pool 池&#xff0c;这个 Pool 维护了一个类似栈的 LIFO 队列&#xff0c;里面存放负责处理任务的 Worker然后在 client 端提交 task 到 Pool 中之后&#xff0c;在 Pool 内部&#xff0c;接收 task 之后的核心…

数据库数据恢复—Mysql数据库误删表数据的数据恢复案例

mysql数据库数据恢复环境&#xff1a; 本地服务器&#xff0c;windows server操作系统 &#xff0c;部署有mysql单实例&#xff0c;数据库引擎类型为innodb&#xff0c;独立表空间&#xff0c;无数据库备份&#xff0c;未开启binlog。 mysql数据库故障&#xff1a; 工作人员使…

勒索病毒最新变种.mallox勒索病毒来袭,如何恢复受感染的数据?

导言&#xff1a; 威胁着我们数据安全的勒索病毒如.mallox已经变得愈发狡猾和具有挑战性。本文91数据恢复将深入介绍.mallox勒索病毒的特征、恢复受害数据的方法&#xff0c;以及一些预防措施&#xff0c;助您更好地应对这一威胁。 如果受感染的数据确实有恢复的价值与必要性&…

yolov5 获取漏检图片脚本

yolov5 获取漏检图片脚本 获取样本分数在0.05到0.38直接的样本。 # YOLOv5 by Ultralytics, GPL-3.0 licenseimport argparse import json import os import sys import time from pathlib import Pathimport cv2 import numpy as np import torch import torch.backends.cud…

HarmonyOS应用开发初体验

9月25日华为秋季全场景新品发布会上&#xff0c;余承东宣布&#xff0c;全面启动鸿蒙原生应用&#xff0c;HarmonyOS NEXT开发者预览版将在2024年第一季度面向开发者开放。 最近鸿蒙开发可谓是火得一塌糊涂&#xff0c;各大培训平台都开设了鸿蒙开发课程。美团发布了鸿蒙高级工…

ZLMediaKit 编译以及测试(Centos 7.9 环境)

文章目录 一、前言二、编译器1、获取代码2、编译器2.1 编译器版本要求2.2 安装编译器 3、安装cmake4、依赖库4.1 依赖库列表4.2 安装依赖库4.2.1 安装libssl-dev和libsdl-dev4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖 三、构建和编译项目&#xff08;启用WebRTC功能&#xff09…

JavaWeb笔记之MySQL数据库

#Author 流云 #Version 1.0 一、引言 1.1 现有的数据存储方式有哪些&#xff1f; Java程序存储数据&#xff08;变量、对象、数组、集合&#xff09;&#xff0c;数据保存在内存中&#xff0c;属于瞬时状态存储。 文件&#xff08;File&#xff09;存储数据&#xff0c;保存…

电商类app如何进行软件测试?有必要进行第三方软件测试吗?

电商类app在开发过程中&#xff0c;软件测试是一个非常重要的环节。通过软件测试&#xff0c;可以确保app在发布和使用过程中的稳定性和安全性。那么&#xff0c;电商类app究竟如何进行软件测试?是否有必要进行第三方软件测试? 一、电商类app如何进行软件测试?   1. 内部…

武汉小程序开发全攻略:从创意到上线,10个必备步骤详解

在移动互联网快速发展的今天&#xff0c;武汉小程序开发成为越来越受关注的领域。作为专业从业者&#xff0c;我将为您详细解读武汉小程序开发的全攻略&#xff0c;从创意到上线的十个必备步骤&#xff0c;助您轻松掌握小程序开发的要点。 步骤一&#xff1a;明确小程序定位与…

http的请求头和响应头安全漏洞bug修改

一、背景环境 系统部署Windows环境&#xff0c;使用的是Tomcat&#xff0c;同时启动前后端一起的。 想不到吧&#xff01;Win11当服务器&#xff0c;部署网站 二、安全扫描 三、可行性方案 四、终极方案 response.setHeader("X-Permitted-Cross-Domain-Policies&quo…

QMS之SCARMRB小知识

SCAR 供应商质量问题反馈单(Supplier Corrective Action Request) 对于来料不良&#xff0c;如需供应商进行整改&#xff0c;则可直接开SCAR&#xff0c;让供应商按照客户要求进行整改&#xff0c;完成整改后&#xff0c;提交给客户审批&#xff0c;客户则可以实时跟踪…

AIGC智能创作时代一书总结

基准模型&#xff1a;Foundation Model 大模型&#xff1a;Large Language Model&#xff0c;LLM GAN&#xff08;2014&#xff09;、Diffusion&#xff08;2015&#xff09;、CLIP&#xff08;2021&#xff09;、Seq2Seq&#xff08;2014&#xff09;、Attention、Transformer…

python numpy 两种方法将相同shape的一维数组合并为二维数组

1 np.column_stack 最简单的一种方法 将多个一维数据按【列】合并为二维数组 import numpy as np# a b 都是一维数组 a np.array((1,2,3)) b np.array((2,3,4))# 变成二维 merge np.column_stack((a,b)) # array([[1, 2],[2, 3],[3, 4]])2 np.hstack 尽管该函数也是对【列…

FPGA乒乓操作详解,知道与FIFO的区别吗?

FPGA乒乓操作是一种高效的数据流控制处理技巧&#xff0c;它主要应用于需要快速且连续数据处理和缓冲的场合。乒乓操作的核心在于利用两个缓冲区交替存储数据流&#xff0c;从而实现数据的无缝实时传输和处理。 本文将详细介绍乒乓操作的基本原理、应用场景以及与FIFO的区别。…

超越GPT-4!谷歌AI大模型Gemini震撼发布

原创 | 文 BFT机器人 在Open AI风头正盛之际&#xff0c;谷歌大杀器终于上线&#xff01; 当地时间12月6日&#xff0c;谷歌CEO桑达尔・皮查伊宣布正式推出其规模最大、功能最强大的新大型语言模型Gemini 1.0版。 据悉&#xff0c;Gemini 1.0是谷歌筹备了一年之久“对抗”GPT-…