我试图做这样的事情: Android Map api v2 Custom marker with ImageView 但我一直坚持使用图像加载器。
尝试:
Bitmap bmImg = imageLoader.loadImageSync(url);
LogCat给了我
04-13 14:11:44.953: E/ImageLoader(18542): android.os.NetworkOnMainThreadException
这是我的代码。我有一个ArrayList相机,包含所需的所有信息(titrle,position,url等)。
public void drawPicsOnMap()
{
String title = null;
String place = null;
for (int i = 0; i<camera.size(); i++)
{
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(80, 80, conf);
Canvas canvas = new Canvas(bmp);
// paint defines the text color,
// stroke width, size
Paint color = new Paint();
color.setTextSize(35);
color.setColor(Color.BLACK);
Camera cam = camera.get(i);
LatLng coord = new LatLng(cam.lat, cam.lon);
title = Integer.toString(cam.id);
place = cam.place;
String url = cam.img;
Bitmap bmImg = imageLoader.loadImageSync(url);
//modify canvas
canvas.drawBitmap(bmImg, 0,0, color);
canvas.drawText(title, 30, 40, color);
Marker mark = map.addMarker(new MarkerOptions()
.position(coord)
.title(title)
.snippet(place)
.icon(BitmapDescriptorFactory
.fromBitmap(bmp)));
markers.put(mark.getId(), url);
}
}
答案 0 :(得分:6)
试试这个:
imageLoader.loadImage(url, new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
//write your code here to use loadedImage
}
});
下面 将在UI线程上调用onLoadingComplete,使其具有线程安全性
答案 1 :(得分:0)
您无法在主线程上进行任何联网。 See for description。 UIL通常在调用displayImage时为您创建线程和东西,但loadImageSync不会。创建一个线程并加载它或使用AsynTask。