我正在寻找有关是否可以在此处使用相同参数,而不是一遍又一遍地复制和粘贴相同代码的建议。
我正在尝试在App上移动块以产生视觉效果。屏幕上有一堆图像块(imageViews),我希望它们中的大多数都进行相同的动作,但是,我知道经常会教DRY(不要重复自己),而且我认为这确实是在这样做。有什么办法可以不不断重复我自己?
var mScanner = (imageView1)
var mAnimation = TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 1.0f,
TranslateAnimation.RELATIVE_TO_PARENT, -1.0f
)
mAnimation.setDuration(2500)
mAnimation.setRepeatCount(-1)
mAnimation.setRepeatMode(Animation.REVERSE)
mAnimation.setInterpolator(LinearInterpolator())
mScanner.setAnimation(mAnimation)
var mScanner2 = (imageView2)
var mAnimation2 = TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 1.0f,
TranslateAnimation.RELATIVE_TO_PARENT, -1.0f
)
mAnimation2.setDuration(2500)
mAnimation2.setRepeatCount(-1)
mAnimation2.setRepeatMode(Animation.REVERSE)
mAnimation2.setInterpolator(LinearInterpolator())
mScanner2.setAnimation(mAnimation2)
我希望能够使用相同的代码块而无需 必须连续复制并粘贴多个imageView。
答案 0 :(得分:0)
只需使用这样的动态参数创建一个辅助函数
private fun setupAnimation(scanner: Scanner, imageView: Imageview) {
scanner = (imageView)
val animation = TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 1.0f,
TranslateAnimation.RELATIVE_TO_PARENT, -1.0f
)
animation.setDuration(2500)
animation.setRepeatCount(-1)
animation.setRepeatMode(Animation.REVERSE)
animation.setInterpolator(LinearInterpolator())
scanner.setAnimation(animation)
}
您可以多次调用此函数
答案 1 :(得分:0)
您可以使用辅助函数来减少冗余代码,也可以使用kotlin的作用域函数来使代码清晰。
/**
* Helper function for setting animation to a image view
*/
private fun setupAnimation(imageView: ImageView) {
val animation = TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 1.0f,
TranslateAnimation.RELATIVE_TO_PARENT, -1.0f
)
animation.apply {
duration = 2500
repeatCount = -1
repeatMode = Animation.REVERSE
interpolator = LinearInterpolator()
}
imageView.animation = animation
}