Выпустил сегодня новую версию библиотеки photo-flex-layout
Это реализация лайута из google photos. Его фишка в том чтоб при любом количестве фотографий с разным соотношением сторон выстроить красивую сетку. Для решения задачи используется упрощенный алгоритм для отображения текста. Сам бы я алгоритм не осилил, поэтому подсмотрел его реализацию в одной из опенсорсных реализаций гуглофото.
В предыдущей версии было два бага, если фоток слишком мало и они не занимают целую строку, то высота строки выставлялась в полтора раза больше целевой и это выглядело не прикольно. Теперь выставляю целевую высоту.
Второй баг был интереснее, он стрелял если ширина была нечётным число. Тогда некоторые строки становились немного шире чем должны из-за чего они вываливались из контейнера. Проблема была в том что после подсчёта оптимальной высоты для строки, она округлялась. Из-за чего со временем накапливалась ошибка округления и некоторые строки ехали. Решилась проблема тем что высоту теперь я округляю в самом конце. Ширина кстати тоже округляется, но не до целого а 2 знаков после запятой. Если посмотреть на тесты, работает это не всегда идеально, но в результате при отображении всё работает как надо.
Это реализация лайута из google photos. Его фишка в том чтоб при любом количестве фотографий с разным соотношением сторон выстроить красивую сетку. Для решения задачи используется упрощенный алгоритм для отображения текста. Сам бы я алгоритм не осилил, поэтому подсмотрел его реализацию в одной из опенсорсных реализаций гуглофото.
В предыдущей версии было два бага, если фоток слишком мало и они не занимают целую строку, то высота строки выставлялась в полтора раза больше целевой и это выглядело не прикольно. Теперь выставляю целевую высоту.
Второй баг был интереснее, он стрелял если ширина была нечётным число. Тогда некоторые строки становились немного шире чем должны из-за чего они вываливались из контейнера. Проблема была в том что после подсчёта оптимальной высоты для строки, она округлялась. Из-за чего со временем накапливалась ошибка округления и некоторые строки ехали. Решилась проблема тем что высоту теперь я округляю в самом конце. Ширина кстати тоже округляется, но не до целого а 2 знаков после запятой. Если посмотреть на тесты, работает это не всегда идеально, но в результате при отображении всё работает как надо.