我有一个卡视图,它有一个自定义适配器,它使用Picasso(在onBindViewHolder(延迟加载)内)将图像加载到其目标中。 自定义行有一个按钮,当单击该按钮时,将打开片段,在宽视图中显示图像,使用原始imageview中的位图 (在片段之前我检查位图是否在主映像中完全加载,使用毕加索回调中的布尔值为onSucess()中的'true'。直到那时我的按钮被禁用)如:
BindViewHolder:
Picasso.with(context)
.load(cl.getUrlPhoto())
.resize(500, 500)
.error(R.drawable.images)
.into(cardViewHolder.urlPhoto, new Callback() {
@Override
public void onSuccess() {
cardViewHolder.imgL=true;
cardViewHolder.fab.setEnabled(true);
cardViewHolder.pb_b.setVisibility(View.INVISIBLE);
}
@Override
public void onError() {
cardViewHolder.imgL=false;
cardViewHolder.fab.setEnabled(false);
cardViewHolder.pb_b.setVisibility(View.GONE);
}
});
(我在这里检查布尔是否为真,然后执行此部分代码)片段部分加载:
imageView.buildDrawingCache(true);
Bitmap bitmap = imageView.getDrawingCache(true);
BitmapDrawable bitmapDrawable = (BitmapDrawable)
imageView.getDrawable();
bitmap1 = bitmapDrawable.getBitmap();
scaleImageView.setImageBitmap(bitmap1);
。但有时在图像仍在加载或加载时滚动或只是单击以查看完整图像2-3次它崩溃并给出错误
“RuntimeException:Canvas:尝试使用循环位图android.graphics.Bitmap。”
答案 0 :(得分:0)
在您尝试回收或设置为由 Picasso 加载的图像为空时,会出现此异常,这意味着 Picasso 库不会指望加载图像通过它来回收,当它试图加载时抛出异常。希望这个解决方案适合你
答案 1 :(得分:-1)
尝试用Glide替换毕加索