问题标签 [jetpack-compose-animation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
439 浏览

android - 如何在 Jetpack Compose 中为动态列表的元素设置动画?

如何使用动画将列表的元素转换为新列表(可能大小不同)?

我有一个饼图,当它的切片(分数)发生变化时,我想将以前的分数动画化为新的分数。问题是,切片的数量每次都可以不同。

如果新切片的数量小于当前切片的数量,则当前的额外切片应从其当前分数变为0.
如果新切片的数量大于当前切片的数量,则新的额外切片应该从动画0到它们的分数。

我目前已经用一个恒定大小的列表(10,因此切片不能超过 10)实现了这一点
(请注意,图表外观的初始动画可能与后续动画不同):

下面是一个示例图表,最初有两个切片,然后动画到一个切片
(第一个切片动画到单个新分数,第二个切片动画到0-<br /> 它们有点不一致,可能是因为插值和动画规范) :

示例所需的动画

0 投票
2 回答
292 浏览

android - Jetpack Compose MutableTransitionState currentState 持有错误的值

我使用AnimatedVisibility动画从 a 中删除一个项目,LazyColumn以及MutableTransitionState捕捉动画的结尾以从LazyColumn的列表中删除该项目。

我为此编写了一个方便的扩展函数:

从某种意义上说,它返回正确的值(经过测试)是正确的,但currentState似乎false只是最初,所以我无法捕捉到我唯一感兴趣的事件 - Invisible

这是我的LazyColumn

ItemCard的 aButton变为animationState.tagetValuefalse并且状态记录在卡内:

很不幸,我的日志是这样的:

那么隐形状态在哪里,即false currentState?我做错了什么吗?

0 投票
1 回答
50 浏览

android - 如何旋转可组合并将进度侦听器添加到旋转中?

我正在尝试将基于视图的代码转换为 Compose。我有一个可组合的,它将图像(画家)作为参数并使用图像可组合显示它。我想要的是,每当参数值发生变化时,我的图像应该进行 360 度旋转,并且图像应该在角度约为 1 时发生变化。180度(即动画中途)

这是我制作的可组合。

现在,当displayImage更改时,新图像立即显示,没有任何动画(显然)。如何实现所需的动画?

我试图转换的代码如下所示:

0 投票
2 回答
991 浏览

android - 如何在 Jetpack Compose 中实现平移 + 缩放动画?

我在屏幕的一个角落有一个带有图像的屏幕,我想将它动画到屏幕的中心。有点像从

第一个位于屏幕的左上角,第二个位于屏幕中央。如何在两种状态之间设置动画?

0 投票
1 回答
156 浏览

kotlin - Jetpack Compose - 在状态变化时播放复杂的动画

如何在切换到特定状态时使用协程播放复杂动画?

0 投票
1 回答
56 浏览

android - 在展开动画旁边滑动项目

我有以下动画:

在此处输入图像描述

问题是:

  • 当动画开始时,搜索图标(放大镜)会立即滑到屏幕左侧。

  • 当搜索栏向后折叠时,图标会平稳移动并在接近尾声时加速。

我在这里想要实现的是让这个图标滑动更顺畅,以获得更好的体验。

有没有办法做到这一点?

负责动画的代码:

0 投票
2 回答
113 浏览

android - 动画画布内容更改

我有一个占据整个屏幕的图像。它就像一个背景。

我正在使用 a渲染它Canvas的方法drawImage(...)很好,并且符合我的期望。我想Image在点击它时更改它的来源。

如何为这种变化设置动画?

我不认为Canvas任何东西都提供动画 API,更不用说图像了。任何类型的动画都可以。交叉淡入淡出,滑动(顺便说一句,首选)。在 Canvas 中甚至可能吗?如果不是,那么实现这一点的正确方法是什么?

我的图像绘制代码:

0 投票
1 回答
202 浏览

android - Android Jetpack Compose 复杂的动画性能问题

我刚刚开始编写动画,现在我很困惑我有一个登录屏幕,我想使用动画,但我注意到我的代码存在性能问题。当我第一次来懒惰地单击框并且我不想为此做些什么时,还有其他解决方案还是那样?我该如何解决这个问题?

0 投票
1 回答
49 浏览

android - Android Jetpack Compose (Composable) 手动触发更改

我有一些自定义可组合动画,它使用 LaunchedEffect 在 [minTemperature, maxTemperature] 范围内更改值,我想手动触发动画。这在我更改 minTemperature 和 maxTemperature 值时触发,所以我有LaunchedEffect(minTemperature, maxTemperature)。但问题是,只有当值更改为新值时才会触发可变状态。

因此,如果我调用 setTemperature() 方法,则不会触发动画。所以我所做的是创建新的状态值“temperatureAnimationSwitch”,它是使用视图模型中的公共方法 startTemperatureAnimation() 手动切换的。所以这将触发 LaunchedEffect 的重新启动。

我的问题是:

  1. 这是使用开关值的最佳方法吗?
  2. 当 minTemperature 或 maxTemperature 值设置为之前的值时发生更改事件时,有没有办法触发动画?
  3. 有没有类似'state, flow, livedata..'的对象,但它可以被触发,即使我们将它的当前值更改为它自己。
0 投票
1 回答
38 浏览

android - 撰写:AdvanceTimeBy 不适用于动画

我有两个Boxes 和一个Button。单击Button会切换一个标志,并在这些盒子上触发AnimatedVisibility动画。

代码

输出

在此处输入图像描述

现在我想编写一个测试来检查两个框是否在过渡中间可见。所以我写了一个这样的测试

但它在onNodeWithTag("red_box").assertExists()(2nd)失败。

知道为什么吗?