2015-08-11 3 views
0

Я хочу загрузить все изображения с сервера и сохранить их в кеше. В большинстве случаев загруженные изображения напрямую привязаны к imageView (например, Picasso). Я хочу использовать те же функции в android, которые предоставляются SDWebImage («https://github.com/rs/SDWebImage»).Как реализовать асинхронную загрузку изображений с поддержкой кеша в android?

+0

Так вы что-то пробовали? Почему вы не можете использовать библиотеку Picasso? Проверьте это http://square.github.io/picasso/. Другой вариант может быть https://github.com/nostra13/Android-Universal-Image-Loader – Rohit5k2

+0

Я хочу хранить все изображения в кеше, но не хотите, чтобы изображения напрямую связывались с изображением. Обе эти библиотеки устанавливают изображения непосредственно в изображение, поэтому они мне не полезны. –

+0

Я думаю, вы можете изменить это поведение. Я не уверен. – Rohit5k2

ответ

0

Shutterbug - хорошая библиотека для этой цели (https://github.com/applidium/Shutterbug). Я сам использовал это в нескольких приложениях, и он работает хорошо. Вы можете использовать Shutterbug FetchableImageView (который расширяет ImageView, и вы даете ему URL, а не растровый или идентификатор ресурса, и он отображает изображение после завершения загрузки), или вы можете использовать ShutterbugManager, который позволяет вам контролировать, что происходит после загрузки и кеширование. Все кэширование сделано для вас, это довольно удивительно :)

На README страницы GitHub есть хорошие инструкции о том, как использовать оба варианта, а также есть демонстрационный проект.

РЕДАКТИРОВАТЬ: Просто заметил ваш комментарий. Если вы не хотите привязываться к ImageView, вы можете использовать ShutterbugManager для загрузки изображения, а затем делать с ним все. Любые последующие вызовы методу загрузки будут извлекать изображение из кеша, а не повторять вызов HTTP снова.

public void downloadImage(Context context, String url) { 
    ShutterbugManager.getSharedImageManager(context).download(url, new ShutterbugManager.ShutterbugManagerListener() { 
     @Override 
     public void onImageSuccess(ShutterbugManager manager, Bitmap bitmap, String arg2) { 
      // Do what you like with the Bitmap here. 
     } 

     @Override 
     public void onImageFailure(ShutterbugManager arg0, String arg1) { 
      // Failure :(
     } 
    }); 
} 
Смежные вопросы