Android Glide 4.6.1自定义变换时图像闪烁
我有以下自定义转换(kotlin): 当我像下面那样在回收器视图中使用它时,图像会闪烁和反弹。从我所读到的一切来看,它与不正确地实现Android Glide 4.6.1自定义变换时图像闪烁,android,kotlin,android-glide,Android,Kotlin,Android Glide,我有以下自定义转换(kotlin): 当我像下面那样在回收器视图中使用它时,图像会闪烁和反弹。从我所读到的一切来看,它与不正确地实现updateDiskCacheKey,hashCode,以及equals有关。我从一开始就严格按照位图转换中的说明进行操作 Glide.with(icon) .load(url) .apply(RequestOptions() .transform(IconTransfo
updateDiskCacheKey
,hashCode
,以及equals
有关。我从一开始就严格按照位图转换中的说明进行操作
Glide.with(icon)
.load(url)
.apply(RequestOptions()
.transform(IconTransformation())
.error(errorDrawableRes))
.into(icon)
问题在行池中。put(img)
变为以下解决问题:
if (img != toTransform) {
pool.put(img)
}
问题在行池中。put(img)
变为以下解决问题:
if (img != toTransform) {
pool.put(img)
}
我的评论可能会有所帮助
我使用占位符来解决闪烁问题。Dont转换不起作用
在我的应用程序中不工作。在搜索了Glide的源代码之后,我
查找问题可能来自ImageViewTarget:
/**
* Sets the given {@link android.graphics.drawable.Drawable} on the view using {@link
* android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}.
*
* @param placeholder {@inheritDoc}
*/
@Override
public void onLoadStarted(@Nullable Drawable placeholder) {
super.onLoadStarted(placeholder);
setResourceInternal(null);
setDrawable(placeholder);
}
因此,若占位符为空,ImageView将在之后立即变为空
每次装货。所以我在ImageView中缓存最后一个图像并设置它
作为下一次加载的占位符。这是密码
// init
mGlideOpt = new RequestOptions().dontAnimate().skipMemoryCache(false);
mGlideRB = Glide.with(imageView).asBitmap();
// loading
Drawable drawable = mImageView.getDrawable();
if (drawable != null) {
mGlideOpt = mGlideOpt.placeholder(drawable);
}
mGlideRB.apply(mGlideOpt).load(mCacheFile).into(mImageView);
只是一个临时工作。希望能有帮助
我的评论可能会有所帮助
我使用占位符来解决闪烁问题。Dont转换不起作用
在我的应用程序中不工作。在搜索了Glide的源代码之后,我
查找问题可能来自ImageViewTarget:
/**
* Sets the given {@link android.graphics.drawable.Drawable} on the view using {@link
* android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}.
*
* @param placeholder {@inheritDoc}
*/
@Override
public void onLoadStarted(@Nullable Drawable placeholder) {
super.onLoadStarted(placeholder);
setResourceInternal(null);
setDrawable(placeholder);
}
因此,若占位符为空,ImageView将在之后立即变为空
每次装货。所以我在ImageView中缓存最后一个图像并设置它
作为下一次加载的占位符。这是密码
// init
mGlideOpt = new RequestOptions().dontAnimate().skipMemoryCache(false);
mGlideRB = Glide.with(imageView).asBitmap();
// loading
Drawable drawable = mImageView.getDrawable();
if (drawable != null) {
mGlideOpt = mGlideOpt.placeholder(drawable);
}
mGlideRB.apply(mGlideOpt).load(mCacheFile).into(mImageView);
只是一个临时工作。希望能有帮助