Я создаю простую галерею в Kotlin. Я использую эффект затухания XML, поэтому при каждом нажатии кнопки «Далее» или «Назад» изображение будет затухать в течение 3 секунд. На первом изображении оно исчезает только в течение половины этого времени. Следующие изображения все еще имеют затухание, но только около 0,5 секунд. Это не файл XML, потому что я проверил его в другом проекте, и он отлично работает. Я считаю, что это как-то связано с тем, как я интегрирую это с циклами. Вы можете видеть, что я поместил код для анимации в оба слушателя щелчка. Я только начал изучать оба языка две недели go, так что любой совет поможет. Спасибо.
package com.example.gallery
import android.app.ActionBar.LayoutParams
import android.app.Activity
import android.os.Bundle
import android.view.View
import android.view.animation.AnimationUtils
import android.widget.Button
import android.widget.FrameLayout
import android.widget.ImageSwitcher
import android.widget.ImageView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : Activity() {
private var iS: ImageSwitcher? = null
private var btn1: Button? = null
private var btn2: Button? = null
val myGallery = intArrayOf(R.drawable.beach_house,R.drawable.cars,R.drawable.moss,
R.drawable.pier, R.drawable.tree)
var i = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn1 = findViewById<View>(R.id.button) as Button
btn2 = findViewById<View>(R.id.button2) as Button
iS = findViewById<View>(R.id.imageSwitcher) as ImageSwitcher
iS!!.setFactory {
val myView = ImageView(applicationContext)
myView.scaleType = ImageView.ScaleType.FIT_CENTER
myView.layoutParams = FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT)
myView
}
btn1!!.setOnClickListener {
val animFadeIn =
AnimationUtils.loadAnimation(applicationContext, android.R.anim.fade_in)
iS!!.startAnimation(animFadeIn)
if (i == myGallery.size) {
i = 0
imageSwitcher.setImageResource(myGallery[i])
i++
} else{
imageSwitcher.setImageResource(myGallery[i])
i++
}
}
btn2!!.setOnClickListener {
val animFadeIn =
AnimationUtils.loadAnimation(applicationContext, android.R.anim.fade_in)
iS!!.startAnimation(animFadeIn)
if (i == myGallery.size) {
i = 0
imageSwitcher.setImageResource(myGallery[i])
i++
} else{
imageSwitcher.setImageResource(myGallery[i])
i++
}
}
}
}