Создание нативного внешнего вида и стиля 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
Внешний вид 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
Загрузка данных пользовательского интерфейса в приложениях 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
Джош Скин, Дэвид Гринхол (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
👍12❤3
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
В этой статье рассказывается о том, как я создал собственную пользовательскую заставку для 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
Биометрическая аутентификация позволяет пользователям получать доступ к своим приложениям, используя свои уникальные характеристики, такие как отпечатки пальцев, лица или радужная оболочка глаза. Библиотека 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
В сфере разработки приложений для 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
Меня зовут Алексей, я ведущий разработчик платформенной команды и по совместительству лид архитектурной компетенции в проекте Альфа-Бизнес. Сегодня я расскажу, как можно автоматизировать повторяющуюся работу в андроид-разработке при помощи плагина для 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
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
Оператор
https://medium.com/@dugguRK/mastery-on-invoke-kotlin-8f1ebb4828d0
✍️ @kotlin_lib
Оператор
invoke
в Kotlin - это мощная функция, которая может упростить код и улучшить его читаемость. Давайте разберемся в деталях и изучим его на реальном примере.https://medium.com/@dugguRK/mastery-on-invoke-kotlin-8f1ebb4828d0
✍️ @kotlin_lib
👍2
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.
В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
Производительность Android приложений Kotlin в сравнении с С++ или цена управления памятью
Всем привет! В процессе учебы заинтересовался Android разработкой, в рамках одного из заданий необходимо провести исследование. Выбрал тему, которая давно разжигает мое любопытство, а именно производительность кода на Kotlin в сравнении с С++.
Поиск в русскоязычном интернете не дал почти ничего, всё, так или иначе сводится к перемешиванию, примитивных типов в цикле – пузырьковая сортировка и другие классические алгоритмы. В целом такие эксперименты приводят к выводу о том, что использование JNI имеет слишком высокую стоимость и Java работает быстрее.
https://habr.com/ru/articles/732746/
✍️ @kotlin_lib
Всем привет! В процессе учебы заинтересовался Android разработкой, в рамках одного из заданий необходимо провести исследование. Выбрал тему, которая давно разжигает мое любопытство, а именно производительность кода на Kotlin в сравнении с С++.
Поиск в русскоязычном интернете не дал почти ничего, всё, так или иначе сводится к перемешиванию, примитивных типов в цикле – пузырьковая сортировка и другие классические алгоритмы. В целом такие эксперименты приводят к выводу о том, что использование JNI имеет слишком высокую стоимость и Java работает быстрее.
https://habr.com/ru/articles/732746/
✍️ @kotlin_lib
Хабр
Производительность Android приложений Kotlin в сравнении с С++ или цена управления памятью
Всем привет! В процессе учебы заинтересовался Android разработкой, в рамках одного из заданий необходимо провести исследование. Выбрал тему, которая давно разжигает мое любопытство, а именно...
🔥4
WhosNext
Мультиплатформенный таймер Kotlin.
Простое приложение, которое позволит вам узнать, когда пора менять вратаря в футбольной игре с друзьями.
https://github.com/GuilhE/WhosNext
✍️ @kotlin_lib
Мультиплатформенный таймер 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
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
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
Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании 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
Недавно я прочитал статью об оптимизации хвостовой рекурсии в kotlin через ключевое слово tailrec. Мне стало интересно, как это реализовано под капотом и я решил провести небольшой эксперимент.
https://habr.com/ru/articles/780232/
✍️ @kotlin_lib
👍3
Unit testing Kotlin Flow emissions
https://medium.com/@sedakundakitchen/unit-testing-kotlin-flow-emissions-86ae7cc32333
✍️ @kotlin_lib
https://medium.com/@sedakundakitchen/unit-testing-kotlin-flow-emissions-86ae7cc32333
✍️ @kotlin_lib
👍3