如何使用Universal ImageLoader加载图像而不显示

时间:2014-04-13 11:28:13

标签: java android google-maps-api-2 universal-image-loader

我试图做这样的事情: 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);
    }
}

2 个答案:

答案 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。