我正在尝试覆盖 Kotlin 中的 View.setRotation() 方法。
由于 AndroidKTX 已经提供了属性扩展“旋转”,调用者可以简单地调用
viewObject.rotation = 90.0f
旋转视图。
但是,我想在用户更改旋转时添加一些额外的操作,比如
override fun setRotation(newRotation: Float) {
if (rotation == newRotation)
return
rotation = newRotation
doSomethingElse()
}
由于 StackOverflow 错误,这将崩溃。
所以,我必须添加一些额外的代码来实现这个目标:
private var _rotation: Float = 0.0f
override fun setRotation(newRotation: Float) {
if (_rotation == newRotation) {
return
}
_rotation = newRotation
updateRotationInternally()
}
private fun updateRotationInternally() {
super.setRotation(_rotation)
doSomethingElse()
}
这行得通,但我想知道是否还有其他更优雅的方法,比如“覆盖属性扩展设置器”?