Pull to refresh

Comments 27

Дайте угадаю — вместо всех картинок чёрные квадраты рисуются?
была идея так пошутить если не удалось загрузить картинку, но сдержался)
Не нашел в коде поддержки EXIF Orientation. Вероятно, кому-то эта опция будет полезной.
Использую Glide, пока все устраивает. Я склонен верить гуглу, который её порекомендовал. Возможно, «нежнейший лру кэш» меня будет прельщать, когда мне будет за 30, но тогда и android-а может уже не быть :D
А где он ее порекомендовал, можно ссылку?
Это не рекомендация, это вполне типичный для гугла фейл. Вместо того чтобы написать свой удобный врапер над urlConnection и менеджер загрузки битмапов — юзаются левые Basic HTTP Client / Glide в проекте — примере. Стыдно.
Интересно попробовать… Какая минимальная поддерживаемая версия API?
И залить бы в MAVEN…
Тестил на 11, поэтому поставил ее. Но заглушки в коде стоят и для глючков второго андроида, так что по идее должно работать на любом апи одинаково.
Не совсем понял, в чем преимущества над уже хорошо зарекомендовавшими себя решениями (fresco, UIL, Picasso)? В минимализме или еще в чем-то? Хотелось бы услышать развернутое сравнение с конкурентами: наличие/отсутствие фич, перфоманс, размер и пр.
Все библиотеки работают по устоявшейся схеме, которая выглядит примерно так:
image
Принципиальных отличий между ними нет, поэтому можно говорить только о каких то нюансах и субъективном мнении.

— fresco
Во первых у меня предвзятое отношение к продуктам данной компании. Фейсбук, пожалуй единственное приложение, которое умудряется глючить и лагать среди равных себе по охвату аудитории на моем нексус 5. Сообщение «Отстутствует соедениение» — стало настолько привычным, что я уже даже не кликаю по уведомлениям. Вероятность корректного получения токена при интеграции с фесбук, была вычисленна экспериментально и составляет 90%. Т.е. в 1 из 10 случаев вместо токена вернется ничто. Но если отбросить предвзятость:
+ поддержка webp и gif из коробки
+ хитрое выделение памяти
— совершенно некастомизируемо.
— исходный код нечитаем
Используется кастомная вьюха для рендеринга битмапов, которая хоть и является наследницей imageview — не переиспользуема со стороны. Например в процессе загрузки вам нужно рисовать кружок с процентом загрузки как принять в iOs — вы не можете тупо написать setBitmap вьюхе, потому что это сломает их процесс: frescolib.org/docs/gotchas.html#_

— picasso

+ простой интерфейс
— слабая функциональность
— неэффективное управление памятью ( не используются inBitmaps)

Подходит только для примитивных задач. Нельзя ни поставить загрузку на паузу, ни задать размеры кешей, да практически ничего нельзя. Насколько я понял проект заброшен и Джейк Вартсон переключился на Glide

— UIL

+ хороший компромисс между функциональностью и простотой
— неэффективное управление памятью (предположительно)

Неплохое развитие идей Федора Власова, если честно глубоко не смотрел, потому что оригинал Федора мне ближе, его легче было подстраивать под себя

Вобщем я позиционирую малевича как нечто среднее между uil и picasso. По хорошему надо бы дописать функционала, не изгадив простоту, и будет неплохая библиотека. Пока она чуть лучше picasso, но уступает по функционалу и количеству фич всем остальным.
Решил заюзать Малевича. Всё вроде круто, но есть 4 нюанса:
1. Иногда появляется чёрный квадрат (Малевич?!) на фоне скруглённого изображения
2. Непонятно как использовать дисковый кэш и как он работает (хочу хранить аватар юзера локально)
3. Либа каждый раз ресайзит изображение из ресурсов (создаёт тормоза), хотя ожидаешь что подтянет из кэша
4. Было бы неплохо залить в Мавен
Привет,
1 — возможно дело в незаданном .LoadingImage(R.drawable.some) // preloader image or recource Например прозрачный пиксель можно задать
2 — это обычный лру. сперва читает из памяти, если нет — с диска (и сразу в память), если нет по сети и тп Настройки кеша общие на инстанс малевича
3 — точно не уверен, возможно ресурсы не кешируются либо слишком большие картинки/маленький кеш. Можно вкл дебаг режим и посмотреть логи
1. Прозрачный пиксель для .LoadingImage не помог. Чёрный квадрат видно постоянно на одном изображении, на других появляется время от времени.
cacheParams.compressFormat = Bitmap.CompressFormat.PNG; // Compress format
возможно при пережатии картинки теряется прозрачность, не меняли на JPG?
Так и есть. Вернул на PNG и всё стало хорошо. Спасибо.
5. Мелкий аватар (40dp) почему-то не кешируется на диск и при первом обращении выкачивает изобажение с сервера. То же самое изображение (тот же URL) в других бОльших размерах кешится нормально.
У меня проблема с качеством мелких картинок (размер 30dp). Имею URL на картинку юзера 200×200 и мне надо использовать её в приложении в разных размерах. Крупные картинки (80dp) выглядят нормально, а мелкие замылены. Выставил cacheParams.compressQuality = 100, но не помогло. Что делать?
возможно берется картинка из кеша
там есть параметры управления кешом, и довольно гибкие, я бы попробовал включить для мелких мемори кеш, для крупных дисккеш, чтобы разделить кеши, но не уверен что дело в этом. сложно понять по описанию что происходит
github.com/recoilme/malevich#advansed-usage
Опишу подробнее. По URL получаю картинку JPG 200×200px. Параметры Малевича ImageCacheParams использую те, что по умолчанию. Мне нужно показать скруглённую картинку, это делаю через .imageDecodedListener —> Malevich.Utils.getSquaredCircleBitmap. В результате вывод этой картинки в 80dp выглядит чётко, а та же самая картинка, запрошенная с размером 30dp, выглядит замыленой. Как я понимаю, если включен кэш, то при первом запросе картинка ложится в него в оригинальном размере, а дальше Малевич отдаёт её в нужном размере, без скачивания — возможно где-то в этом месте происходит замыл?
Fix: (int) getResources().getDimension(30dp) возвращает размер 78 точек, что видимо мало для чёткого отображения картинки в 30dp, а вот 45dp (что для моего экрана равно 118 точек), вполне достаточно и картинка выглядит чётко.
Sign up to leave a comment.

Articles

Change theme settings