我正在尝试为我的Google Map创建一个自定义群集图标。 我之前曾尝试扩展AsyncTask,并使用execute()。get()从Submit()。get()检索可绘制对象,但与实现Callable相同。我也尝试过从load(uri).into(imageView)获取ImageView,但是在其余的代码之后操作已完成。
final List<Drawable> profilePhotos = new ArrayList<>(Math.min(4, markerCluster.getSize()));
for (MarkerCluster p : markerCluster.getItems()) {
// Draw 4 at most.
if (profilePhotos.size() == 4) break;
final Uri bitmapUri = Uri.parse(p.getDescription());
Drawable drawable = null;GlideBitmapBuilder(bitmapUri));
try {
drawable = Executors.newSingleThreadExecutor().submit(new GlideBitmapBuilder(bitmapUri)).get();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
drawable.setBounds(0, 0, 200, 200);
profilePhotos.add(drawable);
}
MultiDrawable multiDrawable = new MultiDrawable(profilePhotos);
multiDrawable.setBounds(0, 0, 200, 200);
clusterImage.setImageDrawable(multiDrawable);
Bitmap icon = clusterIcon.makeIcon(String.valueOf(markerCluster.getSize()));
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon));
其中GlideBitmapBuilder类为:
private class GlideBitmapBuilder implements Callable<Drawable> {
Uri bitmapUri;
private GlideBitmapBuilder(Uri bitmapUri) {
this.bitmapUri = bitmapUri;
}
@Override
public Drawable call() throws Exception {
drawable = GlideApp.with(getApplication()).load(bitmapUri).submit(200, 200).get();
return drawable;
}
}
预期结果应该是成功返回drawable变量,从该位置我可以为群集创建图标,但是最终从GlideApp获得drawable时冻结了。
我对如何处理此问题一无所知,因此任何帮助都会很大。有没有一种方法可以使commit()。get()不冻结?还是有更好的渲染群集图标的方法?
非常感谢您