我想使用 picasso 将 url 加载到 ImageView,同时进行 1 秒淡入。3 秒后我想淡出并加载另一个 url,依此类推。有没有 github 库或者一段代码?我不想重新发明轮子。
这是我最终所做的:
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)
}
}