我有问题获取位图使用Picasso for for循环.
在第一次运行时不会调用onBitmapLoaded .
第二次打它叫
for (int i = 0; i < 3; i++) {
final int k=i;
Picasso.with(this)
.load(ListA.get(i).getImage()) //image
.resize(100, 100)
.transform(new ImageTrans_CircleTransform())
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Log.i("load", "Ok " + k);
//use bitmap for add marker to map
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Log.i("load", "first " + k);
}
});
}
Run Code Online (Sandbox Code Playgroud)
日志
11-04 16:42:22.222 11677-11677/com.tenten I/load? first___0
11-04 16:42:22.222 11677-11677/com.tenten I/load? first___1
11-04 16:42:22.232 11677-11677/com.tenten I/load? first___2
Run Code Online (Sandbox Code Playgroud)
我使用毕加索从列表图像中获取位图.
我需要位图而不是imageview.
谢谢.:d
Dan*_*nai 24
使用毕加索目标的一个常见问题是人们没有对它们进行强有力的引用.这会导致目标随机工作,因为有时它们会在完成之前被GC收集,有时它们会活得足够长,以便调用回调.
你需要做的是将这些回调存储在某个地方直到它们完成.这是一个例子:
final List<Target> targets = new ArrayList<Target>();
for (int i = 0; i < 3; i++) {
final int k=i;
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Log.i("Targets", "Loaded: " + k);
targets.remove(this);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
targets.remove(this);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Log.i("Targets", "Preparing: " + k);
}
}
targets.add(target);
Picasso.with(this)
.load(ListA.get(i).getImage()) // Start loading the current target
.resize(100, 100)
.into(target);
}
Run Code Online (Sandbox Code Playgroud)
要确保列表没有得到GC,请创建targets一个全局变量.
| 归档时间: |
|
| 查看次数: |
4009 次 |
| 最近记录: |