类似于Android版iOS中的SDWebImage?

类似于Android版iOS中的SDWebImage?,android,ios,Android,Ios,我在寻找类似于Android的SDWebImage的东西。SDWebImage在iOS中的作用是: 从URL加载图像,使用缓存,进行异步下载 我正在为Android寻找类似的东西。有什么提示吗 谢谢。我在下面的链接中得到了这个答案: /* 授权给Apache软件基金会(ASF) 一个或多个参与者许可协议。见通知文件 与此工作一起分发以获取更多信息 关于版权所有权。ASF许可此文件 根据Apache许可证,版本2.0( “许可证”);除非符合规定,否则您不得使用此文件 带着执照。您可以通过以下方式

我在寻找类似于Android的SDWebImage的东西。SDWebImage在iOS中的作用是:

从URL加载图像,使用缓存,进行异步下载

我正在为Android寻找类似的东西。有什么提示吗


谢谢。

我在下面的链接中得到了这个答案:

/* 授权给Apache软件基金会(ASF) 一个或多个参与者许可协议。见通知文件 与此工作一起分发以获取更多信息 关于版权所有权。ASF许可此文件 根据Apache许可证,版本2.0( “许可证”);除非符合规定,否则您不得使用此文件 带着执照。您可以通过以下方式获得许可证副本:

除非适用法律要求或书面同意, 根据许可证分发的软件在 “按原样”的基础上,没有任何 种类,无论是明示的还是暗示的。请参阅许可证以获取详细信息 管理权限和限制的特定语言 在许可证下。
*/

import java.io.IOException;
公共类DrawableManager{
私有最终地图drawableMap;
公共提款经理(){
drawableMap=新HashMap();
}
公共可提取可提取(字符串urlString){
if(drawableMap.containsKey(urlString)){
返回drawableMap.get(urlString);
}
Log.d(this.getClass().getSimpleName(),“图像url:+urlString”);
试一试{
InputStream is=fetch(urlString);
Drawable Drawable=Drawable.createFromStream(是“src”);
如果(可绘制!=null){
drawableMap.put(urlString,drawable);
Log.d(this.getClass().getSimpleName(),“获得了可绘制的缩略图:“+drawable.getBounds()+”,”
+drawable.getIntrinsicHeight()+”,“+drawable.getIntrinsicWidth()+”,”
+可绘制的.getMinimumHeight()+”,“+drawable.getMinimumWidth());
}否则{
Log.w(this.getClass().getSimpleName(),“无法获取缩略图”);
}
回拉;
}捕获(格式错误){
Log.e(this.getClass().getSimpleName(),“fetchDrawable失败”,e);
返回null;
}捕获(IOE异常){
Log.e(this.getClass().getSimpleName(),“fetchDrawable失败”,e);
返回null;
}
}
public void fetchDrawableOnThread(最终字符串urlString,最终图像视图ImageView){
if(drawableMap.containsKey(urlString)){
setImageDrawable(drawableMap.get(urlString));
}
最终处理程序=新处理程序(){
@凌驾
公共无效handleMessage(消息消息){
setImageDrawable((Drawable)message.obj);
}
};
线程线程=新线程(){
@凌驾
公开募捐{
//TODO:将imageView设置为“挂起”图像
Drawable Drawable=fetchDrawable(urlString);
Message Message=handler.getainmessage(1,可绘制);
handler.sendMessage(message);
}
};
thread.start();
}
私有InputStream获取(字符串urlString)引发错误的InputStream异常,IOException{
DefaultHttpClient httpClient=新的DefaultHttpClient();
HttpGet请求=新的HttpGet(urlString);
HttpResponse response=httpClient.execute(请求);
返回response.getEntity().getContent();
}
}


希望有帮助。

在Applidium,我们最近将SDWebImage移植到Android上。它叫Shutterbug,它能满足你的要求

以下是指向项目的链接:。享受吧

在Android中显示图像的简单库。正在后台异步下载图像。图像被缓存在SD卡和内存中。也可用于GridView,仅用于将图像显示到ImageView中


需要记住的是,这将在SD卡上创建一个名为LazyList的文件夹,但由于它是开源的,所以您可以轻松更改名称。这是在考虑列表的基础上建立的,但是你可以在任何地方轻松地使用它。

我在项目中使用的一种简单的东西叫做毕加索:

我在项目的iOS端使用SDWebImage,毕加索也一样简单

类似的东西:
   package com.wilson.android.library;
import java.io.IOException;

public class DrawableManager {
private final Map<String, Drawable> drawableMap;

public DrawableManager() {
    drawableMap = new HashMap<String, Drawable>();
}

public Drawable fetchDrawable(String urlString) {
    if (drawableMap.containsKey(urlString)) {
        return drawableMap.get(urlString);
    }

    Log.d(this.getClass().getSimpleName(), "image url:" + urlString);
    try {
        InputStream is = fetch(urlString);
        Drawable drawable = Drawable.createFromStream(is, "src");


        if (drawable != null) {
            drawableMap.put(urlString, drawable);
            Log.d(this.getClass().getSimpleName(), "got a thumbnail drawable: " + drawable.getBounds() + ", "
                    + drawable.getIntrinsicHeight() + "," + drawable.getIntrinsicWidth() + ", "
                    + drawable.getMinimumHeight() + "," + drawable.getMinimumWidth());
        } else {
          Log.w(this.getClass().getSimpleName(), "could not get thumbnail");
        }

        return drawable;
    } catch (MalformedURLException e) {
        Log.e(this.getClass().getSimpleName(), "fetchDrawable failed", e);
        return null;
    } catch (IOException e) {
        Log.e(this.getClass().getSimpleName(), "fetchDrawable failed", e);
        return null;
    }
}

public void fetchDrawableOnThread(final String urlString, final ImageView imageView) {
    if (drawableMap.containsKey(urlString)) {
        imageView.setImageDrawable(drawableMap.get(urlString));
    }

    final Handler handler = new Handler() {
        @Override
        public void handleMessage(Message message) {
            imageView.setImageDrawable((Drawable) message.obj);
        }
    };

    Thread thread = new Thread() {
        @Override
        public void run() {
            //TODO : set imageView to a "pending" image
            Drawable drawable = fetchDrawable(urlString);
            Message message = handler.obtainMessage(1, drawable);
            handler.sendMessage(message);
        }
    };
    thread.start();
}

private InputStream fetch(String urlString) throws MalformedURLException, IOException {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet request = new HttpGet(urlString);
    HttpResponse response = httpClient.execute(request);
    return response.getEntity().getContent();
}