类似于iOS中的SDWebImage,适用于Android的是什么?

14
我正在寻找类似于SDWebImage的Android库。iOS中SDWebImage的功能包括:

从URL加载图片、使用缓存并进行异步下载。

我正在寻找类似于Android的库。有什么建议吗?

谢谢。


请问如何在Android中实现ListView中的图片懒加载?(初学者级别) - ahsan
4个回答

8

3
在Applidium,我们最近将SDWebImage移植到了Android平台上。这个移植版本被命名为Shutterbug,并且实现了您所需要的一切功能。
以下是项目链接:https://github.com/applidium/Shutterbug。祝使用愉快!

1

我在以下链接中得到了这个答案:ListView中的图片懒加载

   package com.wilson.android.library;

/* 根据一个或多个贡献者许可协议,Apache软件基金会(ASF)授权使用此文件。有关版权所有权的其他信息,请参阅随此工作分发的NOTICE文件。ASF根据Apache许可证第2.0版(“许可证”)向您授予此文件的使用权;除非符合许可证,否则您不得使用此文件。您可以在以下位置获取许可证的副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,根据许可证分发的软件是基于“原样”分发的,没有任何明示或暗示的保证或条件。请参阅许可证以了解许可权限和限制的具体语言。
*/

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();
}

}

希望能有所帮助。


0

https://github.com/thest1/LazyList

一个简单的Android图片显示库。 图像在后台异步下载。 图像被缓存在SD卡和内存中。 也可以用于GridView,只需将图像显示到ImageView中即可。
需要注意的是,这将在SD卡上创建一个名为LazyList的文件夹,但由于它是开源的,您可以轻松更改名称。 这是针对列表构建的,但是您也可以在任何地方轻松使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接