Подтвердить что ты не робот

Что-то похожее на SDWebImage в iOS для Android?

Я искал нечто похожее на SDWebImage для Android. Что делает SDWebImage в iOS:

загружает изображения с URL-адреса, использует кеш, выполняет асинхронную загрузку.

Я ищу что-то похожее для Android. Любой намек?

Спасибо.

4b9b3361

Ответ 1

Что-то простое, что я использую для проекта, называется Picasso:

https://github.com/square/picasso

Я использую SDWebImage в моей стороне iOS проекта, и Picasso так же просто.

Ответ 2

В Applidium мы недавно портировали SDWebImage на Android. Он назывался Shutterbug, и он делает все, что вы просили.

Вот ссылка на проект: https://github.com/applidium/Shutterbug. Наслаждайтесь!

Ответ 3

Я получил этот ответ по следующей ссылке: Ленивая загрузка изображений в ListView

   package com.wilson.android.library;

/*  Лицензия на Apache Software Foundation (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();
}

}

Надеюсь, что это поможет.

Ответ 4

https://github.com/thest1/LazyList

Простая библиотека для отображения изображений на Android. Изображения загружаются асинхронно в фоновом режиме. Изображения кэшируются на SD-карте и в памяти. Может также использоваться для GridView и просто для отображения изображений в ImageView.

Что-то иметь в виду, это создаст папку на SD-карте под названием LazyList, но поскольку она с открытым исходным кодом, вы можете легко изменить имя. Это было построено с учетом списков, однако вы можете так же легко использовать его в любом месте.