Recruiter Hunt - записки разработчика [2] 👾

Всем привет🔥 Продолжаю серию постов с полей разработки приложения по агрегатору вакансий с прямым поиском рекрутеров.🔎

За период времени с прошлой части у меня активно ведётся разработка экрана деталей вакансий, на которой я так прилично затормозил, так как надо было решить важные для моего восприятия UI кейсы плюс поработать над оптимизацией приложения.

Начну с того, что меня сильнее всего застопорило - верхний бар экрана, а конкретно динамически подстраиваемые цвета под логотип компании, а также работа с фоном тех логотипов, которые без фона, короче PNG. Для реализации фона, который динамически подстраивается под доминирующие цвета логотипа компании я применил связку Coil + Palette + Coroutines. Coil - библиотека от Гугла для работы с изображениями (загрузка с сети, кешированое, асинхронность с коробки) Palette - тоже библиотека от Гугла, которая принимает в себя Bitmap изображения и с помощью алгоритмов даёт палитру основных цветов скормленного изображения Coroutines - для асинхронных вычислений Pelette, дабы не блокировать Мейн поток. Реализуя данную связку мы можем делать уникальную стилистику для экранов любой вакансии. Де факто это та же фича, что у Яндекса в музыке.✨ Для того, чтобы PNG картинки логотипов не сливались с фоном к примеру темной или светлой темы я добавил на фон контейнера для картинки градиент с разным уровнем прозрачности, чтобы логотип был доминирующим элементом. Тем самым в темных темах мне удалось достичь приятного эффекта неоновой подсветки логотипов, что лично мне откликается.

Двигаемся дальше! Второе, что было взято пол реализацию - бесшовные переходы между экранами путем расширения контейнера списка на весь экран. Это реализовано с помощью Shared Transition. Данный паттерн для меня новый, поэтому пару вечеров пришлось потратить на изучение документации и практику с переходами. За время обкатки я столкнулся с интересным кейсом.🔥 Если во время анимации перехода резко свайпнуть на экран обратно, то снова выбранную вакансию открыть не получится. Причина тому - SharedTransitionScope, который во время анимации держит в своей памяти цикл анимации и при преждевременном завершении флаг меняется после на выполненно и думает, что мы остались на экране. Решение проблемы - системный запрет свайпа обратно пока анимация не завершилась.

Ну и наверное самое главное, что меня больше всего стопорило - дизайн 🤧 Я не дизайнер, а разработчик, технарь, плюс страшный перфекционист. Одно дело работать по готовому макету, но когда делаешь считай как для себя и без макета, то такое превращается в тихий ужас😐 Вечеров 5 пришлось потратить только на то, чтобы глазу стало приятно и можно было двигаться дальше. На последнем скрине к посту можете увидеть от чего и к чему по визуалу верхней части экрана за это время пришел.

В целом, вот такие дела по проекту. Плюс решил попробовать более свежий формат изображений к посту для лучшего визуала. Благодарю, что дочитал до этого момента и буду рад обратной связи. Хорошего дня в сетке 🔥💜

Recruiter Hunt - записки разработчика [2] 👾 | Сетка — социальная сеть от hh.ru Recruiter Hunt - записки разработчика [2] 👾 | Сетка — социальная сеть от hh.ru Recruiter Hunt - записки разработчика [2] 👾 | Сетка — социальная сеть от hh.ru Recruiter Hunt - записки разработчика [2] 👾 | Сетка — социальная сеть от hh.ru