如何使用 viewmodel android kotlin 设置 Imageview 动画
How do set Imageview Animation with use of viewmodel android kotlin
我有一个 imageView 动画,所以当我旋转屏幕时它又开始了。我如何将它与 viewModel 一起使用。
这是代码
lateinit var img = ImageView
img = findViewById(R.id.img)
Img.animate().translationY(600F).setDuration(2000).setStartDelay(2000)
有两种方法可以解决这个问题:
- 使用视图模型
- 使用onSaveInstanceState()
是。第二种方法不适用于数据量大的情况,最好使用第一种方法。
重新启动 UI 时不会重建视图模型,这就是为什么您在输出中看到与之前的 UI 相同的 UI。
您可以通过查看下面的代码实验室了解如何在 Android 中实现视图模型:
您可以从下面的 link 中阅读有关视图模型的更多信息:
https://developer.android.com/topic/libraries/architecture/viewmodel
ViewModel
保存数据,但不应保存对 View
.
的引用
您可以在 ViewModel
中放置一个布尔值 true,然后在动画之后将其值设置为 false.如果你然后转动你的 phone 并且布尔值仍然是假的,那么它不会再次动画。
你会得到这样的东西:
img = findViewById(R.id.img);
if (vm.getBooleanValue()) {
img.animate().translationY(600F).setDuration(2000).setStartDelay(2000);
vm.setBooleanValue(false);
}
我有一个 imageView 动画,所以当我旋转屏幕时它又开始了。我如何将它与 viewModel 一起使用。
这是代码
lateinit var img = ImageView
img = findViewById(R.id.img)
Img.animate().translationY(600F).setDuration(2000).setStartDelay(2000)
有两种方法可以解决这个问题:
- 使用视图模型
- 使用onSaveInstanceState()
是。第二种方法不适用于数据量大的情况,最好使用第一种方法。
重新启动 UI 时不会重建视图模型,这就是为什么您在输出中看到与之前的 UI 相同的 UI。
您可以通过查看下面的代码实验室了解如何在 Android 中实现视图模型:
您可以从下面的 link 中阅读有关视图模型的更多信息: https://developer.android.com/topic/libraries/architecture/viewmodel
ViewModel
保存数据,但不应保存对 View
.
您可以在 ViewModel
中放置一个布尔值 true,然后在动画之后将其值设置为 false.如果你然后转动你的 phone 并且布尔值仍然是假的,那么它不会再次动画。
你会得到这样的东西:
img = findViewById(R.id.img);
if (vm.getBooleanValue()) {
img.animate().translationY(600F).setDuration(2000).setStartDelay(2000);
vm.setBooleanValue(false);
}