Kotlin
2.16K subscribers
276 photos
123 videos
18 files
399 links
Подборки полезного материала по Kotlin. По всем вопросам @evgenycarter
Download Telegram
Создание нативного внешнего вида и стиля iOS в мультиплатформенном приложении Compose

Внешний вид Compose по умолчанию соответствует Material Design. В Compose Multiplatform некоторые элементы были подправлены для iOS, чтобы выглядеть более нативно. Например, начиная с версии 1.5 эффект прокрутки на iOS стал имитировать эффект прокрутки на платформе. Однако большинство элементов пользовательского интерфейса по-прежнему выглядят как Material. Давайте рассмотрим простой способ получить в своем приложении более "родной" для iOS внешний вид и функциональность.

https://medium.com/@jacobras/getting-the-native-ios-look-feel-in-your-compose-multiplatform-app-33371e6ad362

✍️ @kotlin_lib
👍2
Kotlin's Flow в ViewModels: это сложно

Загрузка данных пользовательского интерфейса в приложениях Android может быть непростой задачей. Необходимо учитывать жизненный цикл различных экранов, а также изменения конфигурации, приводящие к разрушению и воссозданию Activities.

https://bladecoder.medium.com/kotlins-flow-in-viewmodels-it-s-complicated-556b472e281a


Smarter Shared Kotlin Flows

Когда поток SharedFlow или StateFlow, использующий стратегию SharingStarted.WhileSubscribed(), снова собирается после того, как пользователь переходит обратно в Activity или Fragment, его исходный восходящий поток всегда перезапускается с нуля, что иногда приводит к выполнению ненужной работы, когда ранее кэшированные данные были еще актуальны.

https://bladecoder.medium.com/smarter-shared-kotlin-flows-d6b75fc66754


Стратегии автоматического обновления данных на Android с помощью Kotlin Flow

Если невозможно точно определить, когда набор данных, отображаемых в пользовательском интерфейсе, изменился, или если он меняется слишком часто, распространенной стратегией является периодическая перезагрузка данных через фиксированный интервал времени, пока экран находится в поле зрения.

https://bladecoder.medium.com/strategies-for-automatically-refreshing-data-on-android-using-kotlin-flow-cd23ba7cfbe0


✍️ @kotlin_lib
👍3
Kotlin. Программирование для профессионалов. 2-е изд.
Джош Скин, Дэвид Гринхол (2023)

Kotlin – это язык программирования со статической типизацией, который взяла на вооружение Google в ОС Android. Кроме того, это мультиплатформенный язык, позволяющий создавать приложения для macOS, Windows и iOS.

Джош Скин, Дэвид Гринхол, Эндрю Бэйли на практических примерах познакомят вас с ключевыми концепциями Kotlin и фундаментальными API.

Вы начнете с основных принципов и перейдете к расширенному использованию нетривиальных возможностей Kotlin, чтобы создавать надежные и эффективные приложения, а также освоите среду разработки IntelliJ IDEA от JetBrains.

pdf https://cloud.mail.ru/public/WAeN/c1WoRC26p
epub https://cloud.mail.ru/public/G9DS/B7GXopmms

✍️ @kotlin_lib
👍123
This media is not supported in your browser
VIEW IN TELEGRAM
Создание скринсейвера для macOS на Kotlin

В этой статье рассказывается о том, как я создал собственную пользовательскую заставку для macOS, почти полностью построенную на Kotlin и использующую возможности Kotlin Multiplatform для работы с macOS.

Вдохновением для этого проекта послужил видеоролик с простоя KotlinConf 2023, в котором логотипы Kotlin на протяжении веков прыгали по экрану в стиле классических заставок DVD-плееров.

https://zsmb.co/building-a-macos-screen-saver-in-kotlin/

✍️ @kotlin_lib
🔥4👍3
Как реализовать биометрическую аутентификацию в Android с помощью Kotlin

Биометрическая аутентификация позволяет пользователям получать доступ к своим приложениям, используя свои уникальные характеристики, такие как отпечатки пальцев, лица или радужная оболочка глаза. Библиотека Biometric предоставляет единый API для сильной и слабой биометрии. Для этого мы будем использовать API BiometricPrompt.

В документации по Android описаны три различных типа аутентификации для биометрической аутентификации.

Простыми словами, эти типы аутентификации следующие:

Сильная: этот тип аутентификации требует от пользователя предоставления сильной биометрии, например отпечатка пальца или сканирования радужной оболочки глаза, которую сложнее подделать или обойти. Он обеспечивает высокий уровень безопасности и подходит для приложений, работающих с конфиденциальными данными или транзакциями.

Слабая: Слабая биометрическая аутентификация включает в себя менее надежные методы, например распознавание лица, которые легче обойти или обмануть по сравнению с сильными методами аутентификации. Этот тип аутентификации подходит для приложений с более низкими требованиями к безопасности.

Учетные данные устройства: Этот тип аутентификации не использует биометрические данные, а полагается на защиту устройства, например PIN-код, пароль или шаблон. Он может использоваться в качестве запасного варианта, когда биометрическая аутентификация недоступна или не подходит для пользователя или устройства.

https://johncodeos.com/how-to-implement-biometric-aut..

✍️ @kotlin_lib
👍6
Исследуем возможности Live Data в Kotlin: Исчерпывающее руководство с примерами

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

LiveData - это класс-держатель данных в Android с учетом жизненного цикла, входящий в состав компонентов архитектуры Android. Он предназначен для хранения и наблюдения за изменениями данных с учетом жизненного цикла связанных с ними компонентов, таких как действия и фрагменты. В этой статье мы подробно рассмотрим LiveData в Kotlin, изучим его ключевые особенности и продемонстрируем его использование на примерах.

https://towardsdev.com/exploring-the-power-of-live-data-in-kotlin-a-comprehensive-guide-with-examples-c33048829e59

✍️ @kotlin_lib
👍4👎1
Автоматизируем рутину в Android разработке: плагин для создания шаблонного кода на примере создания -api -impl

Меня зовут Алексей, я ведущий разработчик платформенной команды и по совместительству лид архитектурной компетенции в проекте Альфа-Бизнес. Сегодня я расскажу, как можно автоматизировать повторяющуюся работу в андроид-разработке при помощи плагина для Android Studio.

https://habr.com/ru/companies/alfa/articles/799873/

✍️ @kotlin_lib
👍1
Kotlin под капотом: Нюансы использования аннотаций в Kotlin

Kotlin - очень лаконичный язык, но когда его код компилируется в байткод Java, элегантные конструкции Kotlin распадаются на чудовищные конструкции Java. В то же время использование аннотаций может сыграть с вами злую шутку.

https://proandroiddev.com/kotlin-under-the-hood-the-nuances-of-using-annotations-in-kotlin-a58f0b2b60ac?gi=6ff112513d51

✍️ @kotlin_lib
👍3
Mastery on Invoke Kotlin

Оператор invoke в Kotlin - это мощная функция, которая может упростить код и улучшить его читаемость. Давайте разберемся в деталях и изучим его на реальном примере.

https://medium.com/@dugguRK/mastery-on-invoke-kotlin-8f1ebb4828d0

✍️ @kotlin_lib
👍2
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.

В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.

У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.

Ознакомиться с книгой
Производительность Android приложений Kotlin в сравнении с С++ или цена управления памятью

Всем привет! В процессе учебы заинтересовался Android разработкой, в рамках одного из заданий необходимо провести исследование. Выбрал тему, которая давно разжигает мое любопытство, а именно производительность кода на Kotlin в сравнении с С++.

Поиск в русскоязычном интернете не дал почти ничего, всё, так или иначе сводится к перемешиванию, примитивных типов в цикле – пузырьковая сортировка и другие классические алгоритмы. В целом такие эксперименты приводят к выводу о том, что использование JNI имеет слишком высокую стоимость и Java работает быстрее.

https://habr.com/ru/articles/732746/

✍️ @kotlin_lib
🔥4
WhosNext

Мультиплатформенный таймер Kotlin.
Простое приложение, которое позволит вам узнать, когда пора менять вратаря в футбольной игре с друзьями.

https://github.com/GuilhE/WhosNext

✍️ @kotlin_lib
👍5
Осознанная оптимизация Compose

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

Наша команда Ozon Seller также столкнулась с этой проблемой. Мы решили собрать воедино все советы и наработки по написанию оптимизированного Compose-кода. Активное применение этих советов при оптимизации существующих экранов и написании новых существенно улучшило наши метрики: длительность лага по отношению к длительности скролла (hitch rate; чем меньше, тем лучше) экранов со списками упала в среднем с 15-19 % до 5-7 % (на 90-м перцентиле). Все эти советы и наработки мы описали в этой статье. Она будет полезна и начинающим, и опытным разработчикам, в ней подробно описаны оптимизации и механизмы Compose, а также рассказано про слабо задокументированные особенности и исправления ошибок, которые есть в других статьях. Давайте же начнём.

https://habr.com/ru/companies/ozontech/articles/742854/

✍️ @kotlin_lib
👍4
Осознанная оптимизация Compose 2: В борьбе с композицией

Jetpack Compose постоянно развивается, открывая перед разработчиками новые горизонты для оптимизации. С момента нашего последнего обзора, мы добились значительного прогресса, сократив задержки при скролле с 5-7% до нуля. В этом материале мы поделимся свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему, рекомендуем ознакомиться с первой частью.

https://habr.com/ru/articles/796437/

✍️ @kotlin_lib
🔥2
ViewModel + Kotlin Multiplatform. Пробуем нативное решение

Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. Компания Google объявили о своем интересе к Koltin Multiplatform на прошлом Google I/O 2023. Следом был обозначен вектор развития имеющихся решений архитектурных библиотек Jetpack для поддержки KMP. Буквально считанные часы назад компания Google опубликовали ожидаемую многими новинку, а именно ViewModels из библиотеки Lifecycle с поддержкой API Kotlin Multiplatform. И сейчас мы с вами проверим, насколько это удобно, что уже готово, а что нужно доработать.

https://habr.com/ru/companies/usetech/articles/802111/

✍️ @kotlin_lib
👍2
Kotlin под капотом: как избавиться от рекурсии

Недавно я прочитал статью об оптимизации хвостовой рекурсии в kotlin через ключевое слово tailrec. Мне стало интересно, как это реализовано под капотом и я решил провести небольшой эксперимент.

https://habr.com/ru/articles/780232/

✍️ @kotlin_lib
👍3