我正在使用Glide 3.7.0 enter code here
。刷新时,项目视图始终闪烁(调用RecyclerView
)。
这是我的代码:
notifyDataSetChanged
当我没有使用缓存时,Glide
.with(context)
.load(filepath)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.dontAnimate()
.into(imageview);
在调用ImageView
方法时有一个空位图,并且Glide还没有完成加载位图。
如果我使用以下代码:
notifyDataSetChanged
然后项目Glide
.with(context)
.load(filepath)
.dontAnimate()
.into(imageview);
不再闪烁(使用缓存)。
我想动态更新项目视图,因此我禁用了滑动缓存。
有没有解决这个眨眼错误的解决方案?
非常感谢!
答案 0 :(得分:21)
经过多次尝试,只需使用SimpleTarget解决了我的问题 谢谢!
Glide
.with(context)
.load(filepath)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.dontAnimate()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap arg0, GlideAnimation<? super Bitmap> arg1) {
// TODO Auto-generated method stub
holder.mItemView.setImageBitmap(arg0);
}
});
答案 1 :(得分:1)
更新Glide从版本3到4和setSupportsChangeAnimations(false)
RecyclerView 解决了我的问题
RecyclerView.ItemAnimator animator = recyclerView.getItemAnimator();
if (animator instanceof SimpleItemAnimator) {
((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
}
答案 2 :(得分:1)
就我而言,我通过在 WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
hostname = ip;
上使用定义的维度解决了这个问题。
public static void main() {
BST tree = //constructed BST
PrintStream output = new PrintStream(new File(//name of file to write to));
tree.write(output); // to write the tree to a file
FileInputStream input = new FileInputStream(//file name goes here);
tree.read(input); // to construct the tree from a file
}
答案 3 :(得分:0)
也不要忘记在您的setHasStableIds(true);
中使用adapter
并适当地覆盖getItemId()
方法。
答案 4 :(得分:0)
自SimpleTarget
起已弃用,请尝试以下解决方案:
GlideApp.with(SOMETHING)
.load("WHAT")
.dontAnimate()
.let { request ->
if(imageView.drawable != null) {
request.placeholder(imageView.drawable.constantState?.newDrawable()?.mutate())
} else {
request
}
}
.into(imageView)
您还可以为drawable创建漂亮的扩展名以制作REAL副本:
import android.graphics.drawable.Drawable
fun Drawable.copy() = constantState?.newDrawable()?.mutate()
答案 5 :(得分:0)
试试下面的 Glide.with(this).load(photoToLoad.getPath()).placeholder(imageView.getDrawable()).into(imageView);