news 2026/4/3 7:49:02

Compose动画:手写一个‘烦恼碎纸机’

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Compose动画:手写一个‘烦恼碎纸机’

今天我们要做的,是一个**“烦恼碎纸机” **。

它的玩法很简单:你在屏幕上的便签里写下今天的烦恼(比如“改不完的 Bug”或者“不懂产品的 PM”),然后点击红色的“销毁”按钮。伴随着手机的震动和嗡嗡声,这张便签会被卷入底部的机器,瞬间化作无数碎片飘落。

1. 功能拆解

在写代码之前,我们先来拆解一下这个动画的原理。就像变魔术一样,很多酷炫的效果其实都是“视觉欺骗”。

我们要实现的“吞纸”效果,其实是由三层 UI 叠加而成的:

[ Layer 3: 碎纸机机身 ] <-- 最上层 (zIndex = 2) (这里有一个黑色的矩形入口,用来遮挡) -------------------------------- [ Layer 2: 纸张 (Paper) ] <-- 中间层 (zIndex = 1) (随着动画向下移动,穿过 Layer 3) -------------------------------- [ Layer 1: 背景 (Background) ] <-- 最底层 (zIndex = 0)

关键点在于zIndex。我们将碎纸机的机身盖在纸张上面。当纸张向下移动时,它实际上是滑到了机身图层的下方。但在用户看来,纸张就像是被卷进了机器肚子里。

至于那些飘落的碎纸屑,其实是在机身下方用Canvas绘制出来的粒子动画。


2.布局实现

首先,我们用 Compose 的Box布局来搭建这个布局。

@Composable fun ShredderScreen() { // 纸张的垂直偏移量,我们将通过改变它来驱动动画 val paperOffsetY = remember { Animatable(0f) } Box( modifier = Modifier .fillMaxSize() .background(Color(0xFF222222)) // 暗黑背景,更有沉浸感 ) { // 1. 纸张 (Paper) // 我们给它一个 zIndex = 1f PaperInput( offsetY = paperOffsetY.value, modifier = Modifi
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 23:56:10

从零实现内核崩溃分析:WinDbg解析DMP蓝屏文件完整指南

从崩溃中读懂真相&#xff1a;手把手教你用 WinDbg 深度解析蓝屏 DMP 文件你有没有遇到过这样的场景&#xff1f;服务器毫无征兆地重启&#xff0c;只留下一个神秘的MEMORY.DMP文件&#xff1b;或者刚装完新驱动&#xff0c;系统瞬间蓝屏&#xff0c;错误码一闪而过——想查问题…

作者头像 李华
网站建设 2026/3/28 8:13:04

一文说清Vitis使用教程在Alveo上的应用要点

从零到实战&#xff1a;如何用Vitis在Alveo上高效实现FPGA硬件加速 你是否曾为AI推理延迟过高而焦虑&#xff1f; 是否在处理TB级数据库查询时&#xff0c;眼睁睁看着CPU跑满却束手无策&#xff1f; 又或者&#xff0c;在做实时视频转码时&#xff0c;发现GPU编码器灵活性不…

作者头像 李华
网站建设 2026/3/29 23:49:44

【AI机器视觉】MediaPile和YOLO对比

MediaPipe 是 Google 开源的一个用于构建实时多媒体机器学习应用的框架。它的强大之处在于&#xff0c;将复杂的机器学习模型&#xff08;如手部关键点检测、人体姿态估计、人脸网格识别等&#xff09;封装成了简单易用的 API&#xff0c;支持多语言多平台&#xff0c;让开发者…

作者头像 李华
网站建设 2026/3/17 18:21:13

企业级桂林旅游景点导游平台管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着旅游业的快速发展&#xff0c;信息化管理成为提升旅游服务质量和效率的重要手段。桂林作为国际知名的旅游城市&#xff0c;拥有丰富的自然和人文景观&#xff0c;但传统的旅游管理模式难以满足现代游客的个性化需求。企业级桂林旅游景点导游平台管理系统的开发&#x…

作者头像 李华
网站建设 2026/3/30 19:03:52

Java SpringBoot+Vue3+MyBatis 网站系统源码|前后端分离+MySQL数据库

摘要 随着互联网技术的快速发展&#xff0c;现代Web应用对高性能、模块化和可扩展性的需求日益增长。传统的单体架构在应对复杂业务逻辑和高并发场景时逐渐显现出局限性&#xff0c;前后端分离架构因其灵活性、开发效率高和易于维护等特点成为主流解决方案。基于此背景&#xf…

作者头像 李华