Я новичок в kotlin
, но я знаю java
. Итак, я создал программу, в которой у меня есть одна textview
. Он будет менять свой тест каждые 1se c с анимацией затухания. Так что моя программа работает нормально, но, как я новичок в kotlin
, вы можете мне помочь или дать отзыв, связанный с моим кодом. Также, если я написал что-то не так, вы можете отредактировать это без проблем:)
class MainActivity : AppCompatActivity() {
private lateinit var fadeInAnimation: Animation
private lateinit var fadeOutAnimation: Animation
private lateinit var handler: Handler
private lateinit var myRunnable: Runnable
private val textArray: Array<String> = arrayOf("This", "is", "fading", "text")
private var textPosition: Int = 0
companion object {
private const val ANIM_DURATION: Long = 1000L
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in)
fadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out)
handler = Handler()
initRunnable()
}
override fun onResume() {
super.onResume()
startAnimation()
}
override fun onPause() {
super.onPause()
stopAnimation()
}
private fun initRunnable() {
myRunnable = Runnable {
text_view.animation = fadeOutAnimation
fadeOutAnimation.start()
fadeOutAnimation.setAnimationListener(object : AnimationListener() {
override fun onAnimationEnd(animation: Animation?) {
textPosition = when (textPosition) {
textArray.size - 1 -> 0
else -> ++textPosition
}
startAnimation()
}
})
}
}
private fun startAnimation() {
text_view.text = textArray[textPosition]
text_view.animation = fadeInAnimation
fadeInAnimation.start()
handler.postDelayed(myRunnable, ANIM_DURATION)
}
private fun stopAnimation() {
handler.removeCallbacksAndMessages(null)
fadeInAnimation.cancel()
fadeOutAnimation.cancel()
}
}
Пожалуйста, оставьте отзыв, связанный с моим кодом, как я могу сделать его более понятным, или, может быть, что-то я не правильно сделал или может что-то не практикуется? Спасибо.