使用Picasso将url加载到ImageView并用动画切换它们

问题描述 投票:0回答:1

我想使用 picasso 将 url 加载到 ImageView,同时进行 1 秒淡入。3 秒后我想淡出并加载另一个 url,依此类推。有没有 github 库或者一段代码?我不想重新发明轮子。

android picasso
1个回答
0
投票

这是我最终所做的:

var imageIndexForAnimation = 0

private fun animateImage(urlsList: ArrayList<String>) {
        if (urlsList.isNullOrEmpty()) {
            return
        } else if (urlsList.size == 1) {
            val url = urlsList.getOrNull(0)
            Picasso.get().load(url)
                .into(binding.imageContainer)
        } else {
            binding.imageContainer.clearAnimation()
            imageIndexForAnimation = 0
            val animationSet = AnimationSet(true)
            val fadeIn: Animation = AlphaAnimation(0f, 1f)
            fadeIn.setDuration(1000)
            fadeIn.setAnimationListener(object : Animation.AnimationListener {
                override fun onAnimationStart(animation: Animation?) {
                    imageIndexForAnimation %= urlsList.size
                    val url = urlsList.getOrNull(imageIndexForAnimation)
                    Picasso.get().load(url)
                        .into(binding.imageContainer)
                    imageIndexForAnimation++
                }

                override fun onAnimationEnd(animation: Animation?) {

                }

                override fun onAnimationRepeat(animation: Animation?) {
                }

            })
            animationSet.addAnimation(fadeIn)
            val fadeOut = AlphaAnimation(1f, 0f)
            fadeOut.setDuration(1000)
            fadeOut.startOffset = 3000
            animationSet.addAnimation(fadeOut)
            fadeOut.setAnimationListener(object : Animation.AnimationListener {
                override fun onAnimationStart(animation: Animation?) {
                }

                override fun onAnimationEnd(animation: Animation?) {
                    binding.imageContainer.startAnimation(animationSet)
                }

                override fun onAnimationRepeat(animation: Animation?) {
                }

            })

            binding.imageContainer.startAnimation(animationSet)
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.