我正在使用Glide图像加载库,并希望预加载一些作为资源可绘制对象(不是URL!)存储在设备中的图像。
因此,当按下按钮时,ImageView
中应替换一些图像(并最终循环)。
问题在于,我第一次进入Fragment
并通过按下按钮循环显示图像时,图像闪烁(因为它们已加载到内存中然后显示)。但是,当我将所有图像加载到内存中时,循环看起来很好(没有闪烁),并且图像立即显示。
我只是无法弄清楚预加载的工作原理,并且摆脱了闪烁。
所以我像这样加载我的图像(除GlideApp
行之外,已简化):
// Do this when loading the fragment.
for (i in 0..9) {
for (j in 0..2) {
val resInt = getImages(i)[j] // Returns R.drawable.image1, R.drawable.image2 etc.
GlideApp.with(activity).load(resInt).diskCacheStrategy(DiskCacheStrategy.ALL).preload()
}
}
...
// Do this when pressing the buttons
loadImage(activity, getImages(0)[1], day_image_view) // Load R.drawable.image2
...
fun loadImage(context: Context, res: Int, imageView: ImageView) {
GlideApp.with(context).load(res).diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate().into(imageView)
}
感谢您,度过愉快的一天<3