如何使用 viewmodel android kotlin 设置 Imageview 动画

Posted

技术标签:

【中文标题】如何使用 viewmodel android kotlin 设置 Imageview 动画【英文标题】:How do set Imageview Animation with use of viewmodel android kotlin 【发布时间】:2022-01-19 12:00:46 【问题描述】:

我有一个 imageView 动画,所以当我旋转屏幕时它会重新开始。我如何将它与 viewModel 一起使用。

这里是代码

lateinit var img = ImageView

img = findViewById(R.id.img)
Img.animate().translationY(600F).setDuration(2000).setStartDelay(2000)

【问题讨论】:

【参考方案1】:

ViewModel 保存数据,但不应保存对View 的引用。

您可以在 ViewModel 中放置一个布尔值,即 true,然后在动画之后将其值设置为 false。如果你然后转动你的手机并且布尔值仍然是假的,那么它就不会再动画了。

你会有这样的东西:

img = findViewById(R.id.img);

if (vm.getBooleanValue()) 
    img.animate().translationY(600F).setDuration(2000).setStartDelay(2000);
    vm.setBooleanValue(false);

【讨论】:

【参考方案2】:

有两种方法可以解决这个问题:

    使用视图模型 使用 onSaveInstanceState () 是。第二种方法不适用于大量数据,最好使用第一种方法。 重新启动 UI 时不会重新构建视图模型,这就是为什么您会在输出中看到与之前的 UI 相同的 UI。 您可以通过查看下面的代码实验室了解如何在 android 中实现视图模型:

https://developer.android.com/codelabs/kotlin-android-training-view-model?index=..%2F..android-kotlin-fundamentals#4

您可以通过以下链接阅读有关视图模型的更多信息: https://developer.android.com/topic/libraries/architecture/viewmodel

【讨论】:

以上是关于如何使用 viewmodel android kotlin 设置 Imageview 动画的主要内容,如果未能解决你的问题,请参考以下文章

在可观察到的变化上刷新 ViewModel

仅从 Knockout ViewModel 复制可写项目

如何将从 json 接收到的 ko.observable 字符串解析为整数(数字)值

如何在android + viewModel中进行回调

Knockout ViewModel 在 ajax 之后被更新,但我的 foreach 没有被触发

如何使用 viewmodel android kotlin 设置 Imageview 动画