Glide预加载可绘制资源图像

时间:2019-02-16 02:01:25

标签: android kotlin android-glide preload image-preloader

我正在使用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

0 个答案:

没有答案