我正在尝试在我正在制作的 Android 应用程序中的背景之间进行交叉淡入淡出。 TransitionDrawable 似乎是实现此目的的最佳方法。不幸的是,似乎没有任何方法可以在不挤压或拉伸生成的图像的情况下做到这一点。这是我的代码示例:
val imageResource = setSpecialImage(principalEvent)
if (isFirstTimeLoadingBackground) {
isFirstTimeLoadingBackground = false
} else {
val metrics: DisplayMetrics = resources.displayMetrics
val screenWidth = metrics.widthPixels
val screenHeight = metrics.heightPixels
val bitmap = Picasso.get().load(imageResource)
.resize(screenWidth, screenHeight)
.centerCrop()
.get()
val newDrawable = BitmapDrawable(resources, bitmap)
val backgrounds = arrayOf(backgroundimage.drawable, newDrawable)
val transition = TransitionDrawable(backgrounds)
backgroundimage.setImageDrawable(transition)
backgroundimage.scaleType = ImageView.ScaleType.CENTER_CROP
transition.startTransition(100)
}
backgroundimage.setImageResource(imageResource)
在使用 TransitionDrawable() 之前,我尝试使用 Picasso 加载和更改第二张图像,但似乎过渡本身导致了问题。
有两件事需要注意,尽管我尚未验证它们是否会解决您的问题:
backgrounds
(必须调用setBounds(矩形)方法来告诉可绘制对象在哪里绘制以及应该有多大。)