如何使用Android-Universal-Image-Loader共享图像?

问题描述:

如何使用Android通用图像加载程序共享图像 我有一个imageview通过图像加载器加载,但提供了一个URL加载器,我认为图像加载器已经完成了从URL写入图像到磁盘,然后显示它如何使用Android-Universal-Image-Loader共享图像?

我该如何分享它,而不用将其重新写入磁盘?

item_zoom_image_view是ImageView的 selectedItemImage是具有包含的URL属性的类

这里是我的形象装载机配置(http://...):

public void initImageLoader(Context context) { 
    DisplayImageOptions options = new DisplayImageOptions.Builder() 
      .cacheOnDisc().imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) 
      .bitmapConfig(Bitmap.Config.RGB_565) 
      .build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
      context).threadPriority(Thread.NORM_PRIORITY - 2) 
      .denyCacheImageMultipleSizesInMemory() 
      .discCacheFileNameGenerator(new Md5FileNameGenerator()) 
      .defaultDisplayImageOptions(options) 
      .memoryCache(new WeakMemoryCache()) 
      .denyCacheImageMultipleSizesInMemory() 
      .tasksProcessingOrder(QueueProcessingType.LIFO).build(); 

    imgLoader = ImageLoader.getInstance(); 
    imgLoader.init(config); 
} 

,这里是我如何显示图像

ImageLoader imgLoader = AppData.imgLoader; 
if (!selectedItemImage.getImageURL().trim().equals("")) { 
    imgLoader.displayImage(selectedItemImage.getImageURL(), item_zoom_image_view, new ImageLoadingListener() { 
     @Override 
     public void onLoadingStarted(String imageUri, View view) { 
      Progress.ShowProgressDialog(true); 
      currentImageURI = ""; 
     } 

     @Override 
     public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
      item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers); 
      Progress.HideProgressDialog();; 
      currentImageURI = ""; 
     } 

     @Override 
     public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
      Progress.HideProgressDialog();; 
      currentImageURI = imageUri; 
     } 

     @Override 
     public void onLoadingCancelled(String imageUri, View view) { 
      item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers); 
      Progress.HideProgressDialog();; 
      currentImageURI = ""; 
     } 
    }); 
} 
else 
{ 
    item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers); 
    Progress.HideProgressDialog();; 
    currentImageURI = ""; 
} 

这是我如何将影像分享的:

void ShareImg() { 
    try { 
     Uri bmpUri = Uri.parse(currentImageURI); 
     if (bmpUri != null) { 
      // Construct a ShareIntent with link to image 
      Intent shareIntent = new Intent(); 
      shareIntent.setAction(Intent.ACTION_SEND); 
      shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri); 
      shareIntent.setType("image/*"); 
      // Launch sharing dialog for image 
      startActivity(Intent.createChooser(shareIntent, "Share Image")); 
     } else { 
      // ...sharing failed, handle error 
     } 
    } catch (Exception e) { 

    } 
} 

的问题是,虽然显示图像,我拿着URI(currentImageURI)是不正确的或我不知道,但它显示黑色图像

您需要保存在存储位图分享它。你不能共享缓存图片哪个图片加载器从网址下载

@Override 
    public void onLoadingComplete(String imageUri, View view, Bitmap 
    loadedImage) { 
     Progress.HideProgressDialog();; 
     currentImageURI = imageUri; 
       loadedImage 
//save it in storage then share 
    } 
+0

为什么?我的意思是图像加载器已经提供了一个应该是正确的imageUri,所以我可以使用它来分享加载的图像!使用我分享的方法(我刚刚更新了我的问题) –