我正在使用Kotlin解构声明。我之前将其与SpringAnimation
一起使用,并且运行良好。现在,我想将其与ObjectAnimator
一起使用,并且出现此错误:
解构类型为ObjectAnimator的声明初始化程序!必须具有“ component1()”功能
解构类型为ObjectAnimator的声明初始化程序!必须具有“ component2()”功能
这是我的代码:
val (xanimator, alphaanim) = findViewById<View>(R.id.imageView).let { img ->
ObjectAnimator.ofFloat(img, "translationX", 100f).apply {
duration = 2000
}
to
ObjectAnimator.ofFloat(img, "alpha", 1.0f).apply {
duration = 2000
}
}
怎么了?
答案 0 :(得分:0)
这里的问题是,您不能在新行上开始infix调用函数调用-编译器实质上会推断出在您的第一个apply
调用之后以分号/行结尾的行。这与运算符相同,例如see this issue。
因此,您需要重新格式化代码以使to
连接起来,就像这样:
val (xanimator: ObjectAnimator, alphaanim: ObjectAnimator) = findViewById<View>(R.id.imageView).let { img ->
ObjectAnimator.ofFloat(img, "translationX", 100f).apply {
duration = 2000
} to
ObjectAnimator.ofFloat(img, "alpha", 1.0f).apply {
duration = 2000
}
}
但是出于可读性考虑,也许您可以使用以下内容:
val (xanimator: ObjectAnimator, alphaanim: ObjectAnimator) = findViewById<View>(R.id.imageView).let { img ->
Pair(
ObjectAnimator.ofFloat(img, "translationX", 100f).apply {
duration = 2000
},
ObjectAnimator.ofFloat(img, "alpha", 1.0f).apply {
duration = 2000
}
)
}
或两者之间的任何内容。