news 2026/4/16 13:44:20

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/14 7:04:32

Vlm-Transformer_demo

import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import random# 1. 准备数据&#xff08;字符级语料&#xff09; # 简单语料&#xff08;自己构造&#xff0c;无需下载&#xff09; #训练样本数: 89 | 词汇表字符: [ , a…

作者头像 李华
网站建设 2026/4/16 13:33:41

Python函数调用与输出

在学习Python编程的过程中,初学者常常会遇到一些基本的语法和函数调用的问题。今天我们将通过一个简单的例子来详细解释如何在Python中定义函数并确保其输出正确。 问题描述 假设你是一名Python初学者,正在编写一个函数来判断一个数字是偶数还是奇数。你已经编写了如下的代…

作者头像 李华
网站建设 2026/4/16 13:35:07

上位机开发入门必看:零基础快速理解核心概念

上位机开发从零开始&#xff1a;打通硬件与用户的最后一公里你有没有过这样的经历&#xff1f;手里的单片机跑起来了&#xff0c;传感器数据也采集到了&#xff0c;但你想看看实时波形、改个参数、或者让别人也能操作这套系统——这时候才发现&#xff1a;缺一个“看得见、点得…

作者头像 李华
网站建设 2026/4/16 13:33:25

OrCAD学习第一步:新建工程与项目管理通俗解释

从零开始搞懂OrCAD&#xff1a;新建工程不是点个“确定”那么简单你有没有过这样的经历&#xff1f;打开OrCAD Capture&#xff0c;点击“New Project”&#xff0c;随便输个名字、选个路径&#xff0c;然后就开始画原理图。结果做到一半发现仿真跑不起来&#xff0c;PCB导不出…

作者头像 李华
网站建设 2026/4/13 15:32:23

HID协议入门指南:常见术语与框架介绍

HID协议从零到实战&#xff1a;嵌入式开发者的深度指南 你有没有遇到过这样的场景&#xff1f; 插上一个自制的USB键盘&#xff0c;电脑却无法识别按键&#xff1b;或者做了一个BLE游戏手柄&#xff0c;安卓手机连上了却不会震动。问题可能不在硬件电路&#xff0c;而在于——…

作者头像 李华