我正在谷歌地图v2的InfoWindow中加载一个动态图像。在从内存加载图像和返回要显示的视图的getInfoContents之间,我有一个有趣的竞争条件。即使图像在内存中,在位图中,返回视图时也可能无法完成绘制。我在网上尝试了很多解决方案,但没有一个是100%的。
下面是我当前的代码。我覆盖了GoogleMap.InfoWindowAdapter.的getInfoContents方法
有人知道该怎么处理吗?
@Override
public View getInfoContents(final Marker marker) {
final View view = LayoutInflater.from(context).inflate(R.layout.template_map_info_window, null);
final ImageView vehicleImage = (ImageView) view.findViewById(R.id.infowindow_image);
vehicleImage.setImageBitmap(myBitmap);
return view;
}
您可以在这里获得一些想法。
此外,你可以考虑使用图书馆毕加索,
考虑实现您的图像加载完成的Callback
,它将被显示。
样本代码:
@Override
public View getInfoContents(Marker marker) {
ImageView imageView = (ImageView)myContentsView.findViewById(R.id.imgView);
if (not_first_time_showing_info_window) {
Picasso.with(MainActivity.this).load(YOU_IMAGE).into(imageView);
} else { // if it's the first time, load the image with the callback set
not_first_time_showing_info_window=true;
Picasso.with(MainActivity.this).load(YOU_IMAGE).into(imageView,new InfoWindowRefresher(marker));
}
return myContentsView;
}
private class InfoWindowRefresher implements Callback {
private Marker markerToRefresh;
private InfoWindowRefresher(Marker markerToRefresh) {
this.markerToRefresh = markerToRefresh;
}
@Override
public void onSuccess() {
markerToRefresh.showInfoWindow();
}
@Override
public void onError() {}
}