Android в тесте и маленький капучино
СтатистикаAndroid разработчик из Дринкит @kartollika переродился в писателя и активно ищет темы для публикации
- Последний пост
- 13:11
- Последнее чтение
- 16 авг.
- Постов за неделю
- 1
- Всего постов
- 33
- Тип
- открытый
- Язык
- русский
- Категория
- Технологии
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 380
- 1/48двое суток
- 435
- 1/72трое суток
- 469
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
В этом месяце у меня годовщина работа в Додо — работаю в компании 5 лет ☕️🐳 Я слышал, что на такую дату сотрудникам дарят значки, но не знал, дойду ли я сам до значка Дошел Очень рад, что работаю тут. Мой путь начинался ещё в Донер 42 с Арсением @startupsproducer. А последние 4 года я в дринките и останавливаться совершенно не хочется Работаем 🐱
без подписи
без подписи
без подписи
Проблемы с Navigation 3 присутствуют – от архитектуры до мелочей. Если про архитектуру можно спорить и это даже тянет на статью (может и напишу даже?), то про мелкие сложности легко поделиться тут Одна из таких сложностей связана с BottomSheets. Это даже не столь сложность, сколько кривой их дизайн. Излишне будет упоминать то, что BottomSheet для Navigation 3 вам до сих пор надо копировать себе из Github, чтобы завести стратегию BottomSheetStrategy. На это очень больно смотреть 😅 А саму проблему можете заметить на первом видео. Когда нам нужно открыть боттомшит с полем ввода и сразу показать клавиатуру, то это из коробки сделать не получится. Анимации происходят одновременно, и клавиатура перекрывает BottomSheet полностью. Именно во время первого открытия происходит конфликт анимаций, и клавиатура не учитывается в отступах И это очень давний и известный баг, но фиксить не торопятся Как идея решения я придумал следующую схему: 1. При открытии мы меняем анимацию BottomSheet на более быструю, пока Sheet не перешел в статус "открыт". private class InstantKeyboardMotionScheme( private val standardMotionScheme: MotionScheme = MotionScheme.standard(), ) : MotionScheme by standardMotionScheme { var isSheetOpened by mutableStateOf(false) override fun <T> defaultSpatialSpec(): FiniteAnimationSpec<T> = if (isSheetOpened) { standardMotionScheme.defaultSpatialSpec() } else { tween(durationMillis = 50) } } 2. Подменить анимацию можно через MaterialTheme val motionScheme = remember { InstantKeyboardMotionScheme() } MaterialTheme(motionScheme = motionScheme) { ModalBottomSheet() } 3. Отслеживаем статус BottomSheet через стейт val sheetState = rememberModalBottomSheetState() val isSheetOpened = sheetState.currentValue != SheetValue.Hidden SideEffect { if (isSheetOpened) { motionScheme.isSheetOpened = true } } Итог – как теперь это выглядит на видео 2. Видно, что диалог быстро появляется, и дальше уже работает стандартная анимация 🤩 Выложил это в Gist на Github. Сделал это отдельной стратегией, но полезно и объединить обычный BottomSheet и InstantKeyboardBottomSheet в единую стратегию, чтобы поддерживать только один диалог
Привет! Долго меня тут не было, считайте что был в творческом отпуске (работал) На этой неделе начну рассказывать цикл про то, как мы всё таки делаем дизайн систему в Дринките, как и обещал чуть ранее. Спойлер – мы продолжаем тюнить playground и готовимся к рефакторингу темы. А пока напишу про пост, который сегодня привлек мое внимание. Пост про Navigation 3 в канале Compose Broadcast. В статье переводили сразу всё приложение с Navigation 2 на Navigation 3. В итоге вышло 2 недели разработки и еще полторы недели стабилизации. Так совпало, что недавно я делал доклад на нашу Android гильдию о том, как хорош Navigation 3 и как переехать на него итеративно и контролируемо: ▫️Идем от листьев к корню. Фичи по отдельности переезжают на Nav3 и создают свой локальный NavDisplay, но снаружи остаются обычным экраном (фрагментом) ▫️Всякие диалоги и BottomSheets перестают быть фрагментами и рендерятся через сцены ▫️Nav2 выпиливается последним шагом, когда всё остальное уже на Nav 3 ▫️Ну и делать это конечно можно агентами, заранее описав спеки об итеративной миграции и о том, как конечный результат должен выглядеть Однако даже так есть свои сложности. Об одной из них расскажу завтра Cаму презентацию я залил на Github Pages, а также выложил видео с гильдии и демо-проект с этапами миграции.
без подписи
без подписи
Дима Максимов выступил на Мобиусе! Показал как мы в Дринките делаем Shared element и как у нас комбо с блюром на блюбре. 💙 Я сидел, слушал, и подумал, если бы я не знал Диму и был во вне Додо, я бы подумал "ну парни конечно с ума сошли, пиксель перфект их покусал". Но ведь выглядит топово! 🐳
без подписи
И вот снова мобиус, только теперь я спикер 😅 Подходите знакомиться, общаться!
Промокод на Mobius на 25% 🎁 Мне дали несколько промокодов на конференцию Mobius 2026 Spring, которая начинается уже на следующей неделе Напомню, что я буду там спикером с темой про Shared Transitions 🎤 Помимо меня, там будет выступать мой коллега Максим @mobilefiction с хайповым докладом про AI Бариста Я очень люблю залипать в разные приложения и вдохновляться интерфейсами оттуда 🙄 Так что условие такое: Напишите в комментах, что вы цените в UI больше всего Если еще поделитесь приложением которое вдохновляет вас, то будет вдвойне круто Первым трем комментаторам скину промокод в личку UPD: я отдал один промокод. Если кто-то хочет получить еще один, то приходите ко мне в личку @kartollika #Mobius
без подписи
без подписи
без подписи
В последнее время было много суеты в жизни 💲 В начале апреля активно переезжали в собственную квартиру – и вот уже как 2 недели живу там. Пока что все нравится, каждый день на маркетплейсах покупаем что-то в дом На прошлой неделе был в Москве в командировке. Там увиделись в полном (почти) составе Дринкита и ребятами из большого Додо. Было очень приятно всех-всех повидать, особенно кто всегда сидит в других странах Сразу после командировки я заболел, но уже восстанавливаюсь :) Теперь настает суета по финальным подготовкам к Mobius, который через полторы недели 😧
Мы в Дринките начали долгожданную большую работу над дизайн системой! Наверное вы удивитесь, но у нас не было дизайн системы как таковой... Наша дизайн система в проекте выглядела так: общая Compose тема DrinkitTheme, на коленках сверстанные компоненты (к тому же часто дублирующие друг друга) Да и ... всё Планы у нас амбициозные, аппетиты нескончаемые, а команда всего 3 человека 😅 Главные вещи, которые мы планируем затронуть и решить за наш эпик: 🟡 Автоматизация токенов и атомов из фигмы в код. Помощь дизайнеру, чтобы без разработчиков поменять цвет/тень/скругление 🟡 Песочница дизайн системы. Наша дизайнер настояла, что это must для нашей жизни, и мы согласны. Единое место, где можно протестировать все компоненты – это очень важно 🟡 Унификация всех компонентов – от кнопок до полноценных организмов. Чтобы одна и та же вьюшка выглядела и работала одинаково, а не пятью разными способами И это только малая часть. Дальше – процессы, адаптация команды, метрики, обмен практиками с ребятами из Додо и рассказ об этом в паблик. В общем, работы на несколько кварталов 💻 Буду рассказывать по пути про успехи, сложности и наш опыт. А начнем мы с дизайн-песочницы, написанной на 100% с помощью Claude Code 👮♀️
Кто первый дойдет до знакомства с Lance Vance Dance с фотопруфом - тому подарю кофе в Дринките 🌳 Фотопруфы в комменты
Хотите испорчу ваш рабочий пятничный настрой? 😏 Нашел сайт с полностью портированной на Web моей любимой игрухой – GTA: Vice City https://quenq.com/apps/vice-city/ Не благодарите, будет чем позаниматься пока агенты пашут 😼
Лайв-кодинг на собеседованиях всё ещё актуален? 😅 Недавно побывал в гостях у @gulyaev_it — Антон устроил мне мок-собеседование с лайв-кодингом Разбирали три типовых задачи: 🟡код-ревью 🟡рефакторинг 🟡проектирование фичи с нуля На этой секции у разработчика проверяют не столь умение кодить, а его умения строить системы, коммуницировать и критически мыслить Такие собеседования хорошо подсвечивают, какие есть сильные стороны, а какие знания пора обновить) А как вы относитесь к лайв-кодингу в эпоху ИИ? Нужно ли программисту всё ещё показывать свои навыки "вживую"? 🎥 Видео — по ссылке: https://www.youtube.com/watch?v=Dnsxm90pu18