XML анимация затухания работает только для первого изображения? (Kotlin проект галереи изображений) - PullRequest
0 голосов
/ 10 апреля 2020

Я создаю простую галерею в 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++
            }
        }
    }
}
...