#MotionLayout #Animation
Creating Onboarding Flow with MotionLayout
MotionLayout и визуальный редактор анимаций на его основе уже стучатся в дверь в Android Studio 4.0. В статье автор разбирает как с помощь нового Layout сделали красивую анимацию Onboarding с Bubble
Creating Onboarding Flow with MotionLayout
MotionLayout и визуальный редактор анимаций на его основе уже стучатся в дверь в Android Studio 4.0. В статье автор разбирает как с помощь нового Layout сделали красивую анимацию Onboarding с Bubble
Medium
Creating Onboarding Flow with MotionLayout
The Android platform offers the ability to completely customise components that are not available in the prebuilt widgets and layouts or…
#Kotlin #CodeQuality #Coroutines
Вышел Detekt 1.4.0
Вышла новая версия статического анализатора Kotlin кода Detekt 1.4.0 в которой появилась поддержка правил для Coroutine. Полный список изменений:
🔥 Новая категория правил
🔥 Новое правило
🔥 Новое правило
👉 KtLint обновлён до 0.36.0
👉 Свойства
👉 Улучшен анализ кода некоторыми правилами
👉 Исправление багов
Вышел Detekt 1.4.0
Вышла новая версия статического анализатора Kotlin кода Detekt 1.4.0 в которой появилась поддержка правил для Coroutine. Полный список изменений:
🔥 Новая категория правил
coroutines
🔥 Новое правило
GlobalCoroutineUsage
, которое отслеживает использование GlobalScope. По умолчанию выключено🔥 Новое правило
RedundantSuspendModifier
, которое проверят,что suspend
модификатор указан только там, где это нужно. Например, у функций у которых есть вызов других suspend
функций👉 KtLint обновлён до 0.36.0
👉 Свойства
ignoreOverriddenFunction
и ignoreOverriddenFunctions
для некоторых правил унифицированы в одно - ignoreOverridden
👉 Улучшен анализ кода некоторыми правилами
👉 Исправление багов
#Gradle
Optional dependencies are not optional
Gradle в версии номер 6.0 добавил много возможностей для управления зависимостями. Также этому помогло введение в боевой режим Gradle Module Metadata, который позволяет описывать больше информации по сравнению с
В статье разбирается подключение опциональных зависимостей и подключать опциональные зависимости для необходимых функций вашего приложения
Optional dependencies are not optional
Gradle в версии номер 6.0 добавил много возможностей для управления зависимостями. Также этому помогло введение в боевой режим Gradle Module Metadata, который позволяет описывать больше информации по сравнению с
pom.xml
. В статье разбирается подключение опциональных зависимостей и подключать опциональные зависимости для необходимых функций вашего приложения
blog.gradle.org
Optional dependencies are not optional
In a previous blog post, we demonstrated how capabilities could be used to elegantly solve the problem of having multiple logging frameworks on the classpath.
In this post, we will again use this concept in ...
In this post, we will again use this concept in ...
#UI #ConstraintLayout
The Essential Components of ConstraintLayout
ConstraintLayout призван создавать сложные иерархию View без необходимости вложений. Возможности о которых вы могли не знать:
👉 Соотношение сторон (замена PercentFrameLayout)
👉 Guideline
👉 Barrier
👉 Group
👉 Chains (замена LinearLayout)
👉 Flow
Эти возможности разбираются в статье, за исключением Flow (про него читайте в отдельной статье)
The Essential Components of ConstraintLayout
ConstraintLayout призван создавать сложные иерархию View без необходимости вложений. Возможности о которых вы могли не знать:
👉 Соотношение сторон (замена PercentFrameLayout)
👉 Guideline
👉 Barrier
👉 Group
👉 Chains (замена LinearLayout)
👉 Flow
Эти возможности разбираются в статье, за исключением Flow (про него читайте в отдельной статье)
Medium
The Essential Components of ConstraintLayout
Explore the perks of ConstraintLayout
#RxJava #Kotlin
Fundamentals of RxJava with Kotlin for absolute beginners
Хороше интро в мир RxJava на Kotlin:
👉 Что такое RxJava
👉 Создание Observable
👉 Backpressure
👉 Типы emitter: Flowable, Maybe, Single, Completable
👉 Schedulers
👉 Операторы
👉 Disposable - отмена выполнения
👉 Subject = Observable + Observer
Fundamentals of RxJava with Kotlin for absolute beginners
Хороше интро в мир RxJava на Kotlin:
👉 Что такое RxJava
👉 Создание Observable
👉 Backpressure
👉 Типы emitter: Flowable, Maybe, Single, Completable
👉 Schedulers
👉 Операторы
👉 Disposable - отмена выполнения
👉 Subject = Observable + Observer
Medium
Fundamentals of RxJava with Kotlin for absolute beginners
Reactive programming provides a solid foundation towards a scalable application, and today I will give you an introduction on how to use…
#MotionLayout #Animation #AndroidStudio
How to perfect android animations using MotionLayout
MotionLayout привносит совсем новый уровень удобства создания анимаций в Android Studio, создавая их не в коде, а через визуальный редактор. В статье разбирается как сделать анимацию с помощью нового инструмента
How to perfect android animations using MotionLayout
MotionLayout привносит совсем новый уровень удобства создания анимаций в Android Studio, создавая их не в коде, а через визуальный редактор. В статье разбирается как сделать анимацию с помощью нового инструмента
Medium
How to perfect android animations using MotionLayout
Animations are fantastic.
#WorkManager
When WorkManager Stops Working
Будьте внимательны при использование Work Manager unique work и политики APPEND. Проблема заключается в том, что это политика реализована на цепочках и если одна из задач выполняется с ошибкой, то все последующие не будут выполняться.
Что можно сделать:
👉 Не использовать политику APPEND
👉 Никогда не давать unique work завершаться с ошибкой. Только Success и внутри объект с результатом
👉 Использовать WorkManager.pruneWork()
Ждем когда Google исправит эту досадную реализацию
When WorkManager Stops Working
Будьте внимательны при использование Work Manager unique work и политики APPEND. Проблема заключается в том, что это политика реализована на цепочках и если одна из задач выполняется с ошибкой, то все последующие не будут выполняться.
Что можно сделать:
👉 Не использовать политику APPEND
👉 Никогда не давать unique work завершаться с ошибкой. Только Success и внутри объект с результатом
👉 Использовать WorkManager.pruneWork()
Ждем когда Google исправит эту досадную реализацию
#Gradle #Flake #Test
Introducing flaky test mitigation tools for Gradle
Разработчики из Gradle представили новый плагин Test Retry Gradle Plugin, который повторяет выполнение неудачно выполнившихся тестов заданное количество раз. Flaky тесты отображаются специальным образом в тестовом отчете и Build Scan
Поддерживается следующие тестовые фреймворки:
👉 JUnit4
👉 JUnit Platform (JUnit 5)
👉 Spock
👉 TestNG
Introducing flaky test mitigation tools for Gradle
Разработчики из Gradle представили новый плагин Test Retry Gradle Plugin, который повторяет выполнение неудачно выполнившихся тестов заданное количество раз. Flaky тесты отображаются специальным образом в тестовом отчете и Build Scan
Поддерживается следующие тестовые фреймворки:
👉 JUnit4
👉 JUnit Platform (JUnit 5)
👉 Spock
👉 TestNG
blog.gradle.org
Introducing flaky test mitigation tools
This post introduces a new Gradle plugin and build scans improvements aimed at mitigating your flaky tests.
#DependencyInjection #Dagger #Fragment
Constructor injection into Fragments with respect of scopes
Android имеет одно неприятное ограничения - основные компоненты должны создаваться только через конструктор по умолчанию. Исключением стал
В статье вы можете найти как решить проблему, когда у вас есть Dagger Scope и нужно делать inject зависимостей из них.
Constructor injection into Fragments with respect of scopes
Android имеет одно неприятное ограничения - основные компоненты должны создаваться только через конструктор по умолчанию. Исключением стал
Fragment
в AndroidX.Fragment 1.1.0, который позволяет задать кастомную FragmentFactory
в FragmentManager
. Я уже ранее рассказывал как можно соединить Dagger и Inject в конструкторы Fragment.В статье вы можете найти как решить проблему, когда у вас есть Dagger Scope и нужно делать inject зависимостей из них.
Medium
Constructor injection into fragments with respect of scopes.
How to use FragmentFactory together with dagger-android and still be able to inject scoped dependencies into your fragments.
#AndroidAcademy #Minsk #Coroutines
Android Academy Minsk Advanced Topic #0 Coroutines
Android Academy Minsk начинает год с Advanced курса в рамках которого вы сможете узнать о более продвинутых практиках в Android разработке
Начнется курс с рассказа о Kotlin Coroutine. Kotlin изменил Android разработку и вывел ее на новый уровень. Coroutine позволили упростить написание асинхронного кода, сделав ее эффективнее и потребляя меньше ресурсов, а также представив Flow - реактивный подход, который по скорости работы уделывает
Регистрируйтесь! Количество мест ограничено!
Задасто свои вопросы вы можете в @androidacademyminsk
Для тех кому не хватит мест - не переживайте, будут доступны записи докладов.
Следующим занятием пройдёт воркшоп, который позволит закрепить полученные знания на практике
Android Academy Minsk Advanced Topic #0 Coroutines
Android Academy Minsk начинает год с Advanced курса в рамках которого вы сможете узнать о более продвинутых практиках в Android разработке
Начнется курс с рассказа о Kotlin Coroutine. Kotlin изменил Android разработку и вывел ее на новый уровень. Coroutine позволили упростить написание асинхронного кода, сделав ее эффективнее и потребляя меньше ресурсов, а также представив Flow - реактивный подход, который по скорости работы уделывает
RxJava
😮 И расскажет об этом всем Йонатан Левин.Регистрируйтесь! Количество мест ограничено!
Задасто свои вопросы вы можете в @androidacademyminsk
Для тех кому не хватит мест - не переживайте, будут доступны записи докладов.
Следующим занятием пройдёт воркшоп, который позволит закрепить полученные знания на практике
#Security #Networking #OkHttp
How to Prepare Your Android App for a Pentest – Networking Edition
Pentests (penetration testing) - это симуляция кибер атаки на приложение с целью выявления уязвимостей, которые могут быть использованы злоумышленниками.
В статье разбираются такие понятия как
How to Prepare Your Android App for a Pentest – Networking Edition
Pentests (penetration testing) - это симуляция кибер атаки на приложение с целью выявления уязвимостей, которые могут быть использованы злоумышленниками.
В статье разбираются такие понятия как
TLS
, Certificate pinning
, Hostname verification
, а самое главное интеграция этого в вашего приложения на основе OkHttp.Infinum
How to Prepare Your Android App for a Pentest – Networking Edition
Android app penetration testing is a must when developing an app, especially if you deal with sensitive user information.
#UI
Translucent SystemBars the right way — across API levels and themes
Вы уже поддержали в вашем приложении "Edge-to-Edge"? Если нет, то обязательно обратите внимание. Современные устройства со своими огромными экранами и отсутствием рамок позволяют получить наслаждение от такого дизайна в приложениях.
Неотъемлемой частью такого дизайна является работа с системными панелями и задание их прозрачности и цветов. В статье разбирается как это сделать с учетом особенностей Android 5.X, Android 6.0+ и Android 8.0+
Translucent SystemBars the right way — across API levels and themes
Вы уже поддержали в вашем приложении "Edge-to-Edge"? Если нет, то обязательно обратите внимание. Современные устройства со своими огромными экранами и отсутствием рамок позволяют получить наслаждение от такого дизайна в приложениях.
Неотъемлемой частью такого дизайна является работа с системными панелями и задание их прозрачности и цветов. В статье разбирается как это сделать с учетом особенностей Android 5.X, Android 6.0+ и Android 8.0+
Medium
Translucent SystemBars the right way — across API levels and themes
In case of dark theme the colorSurface will be dark/black. We can use a similar color for systemBars as well.
In case of light theme, the colorSurface will be light/white. We can’t use a similar…
In case of light theme, the colorSurface will be light/white. We can’t use a similar…
Разделяете ли вы модели для разных слоев в архитектуре (DB, Network, UI)?
Final Results
78%
Да
13%
Нет
8%
Зачем это делать?
#Gradle
Вышел Gradle 6.1
Новая версия системы сборки не привнесла столь много изменений как предыдущая, но сможет вас порадовать:
👉 Возможность изменения расположения кэша зависимостей
👉 Возможность задания порядка компиляции между Java, Groovy, Scala
👉 Загружаемые Gradle примеры
👉 Новые возможности для разработчиков Gradle плагинов
👉 Tooling API теперь имеет TestLauncher, которые позволяет выполнять отдельные тесты (класс или метод)
Обновиться
Вышел Gradle 6.1
Новая версия системы сборки не привнесла столь много изменений как предыдущая, но сможет вас порадовать:
👉 Возможность изменения расположения кэша зависимостей
👉 Возможность задания порядка компиляции между Java, Groovy, Scala
👉 Загружаемые Gradle примеры
👉 Новые возможности для разработчиков Gradle плагинов
👉 Tooling API теперь имеет TestLauncher, которые позволяет выполнять отдельные тесты (класс или метод)
Обновиться
./gradlew wrapper --gradle-version=6.1
This media is not supported in your browser
VIEW IN TELEGRAM
#Architecture #Coroutines #FLow
Store grand re-opening: loading Android data with coroutines
Android разработчики из New York Times решили закрыть проблем в рекомендуемой архитектуре от Google для Android приложение - Repository. Результатом чего стала библиотека Store 4.0.
В версии 4.0 библиотека также мигрировал с Java и RxJava на Kotlin и Coroutines + Flow.
Store grand re-opening: loading Android data with coroutines
Android разработчики из New York Times решили закрыть проблем в рекомендуемой архитектуре от Google для Android приложение - Repository. Результатом чего стала библиотека Store 4.0.
В версии 4.0 библиотека также мигрировал с Java и RxJava на Kotlin и Coroutines + Flow.
#Binder #IPC
Android Binder Framework
Android Binder - это особенный вид Inter-Process Communication (IPC), разработанная с учетом особенностей мобильных устройств и адаптированная специально под Android.
Почему пришлось заморачиваться? В Android каждое приложение работает в своем собственном процессе, но им необходимо постоянно взаимодействовать с собой, причем эффективно.
Android Binder Framework
Android Binder - это особенный вид Inter-Process Communication (IPC), разработанная с учетом особенностей мобильных устройств и адаптированная специально под Android.
Почему пришлось заморачиваться? В Android каждое приложение работает в своем собственном процессе, но им необходимо постоянно взаимодействовать с собой, причем эффективно.
Medium
Android Binder Framework
In the Linux OS, there are several techniques to achieve IPC (Inter-process communication) like files, sockets, signals, pipes, message…
#Kotlin #typealias
Alter type with typealias
Typealias - это возможность языка Kotlin, которая позволяет вам избавиться от написания длинного типа, например
Особенность в том, что при компиляции
Также
Единственное, что надо понимать, что если вы увлечетесь и начнете заменять все подряд на
Больше в статье и официальной документации
Alter type with typealias
Typealias - это возможность языка Kotlin, которая позволяет вам избавиться от написания длинного типа, например
typealias StringPredicate = (String, String) -> Boolean
Особенность в том, что при компиляции
typealias
будет заменяться на исходный тип, не создавай ничего дополнительногоТакже
typealias
нашел хорошее применение в Kotlin Multiplatform, где позволяет писать actual
типы ссылаясь на уже существующие.expect annotation class Test
actual typealias Test = org.junit.Test
Единственное, что надо понимать, что если вы увлечетесь и начнете заменять все подряд на
typealias
, то ваш код может стать сложнее для понимания других разработчиков. Поэтому правила Человека-Паука все еще в силе 😁!Больше в статье и официальной документации
Medium
Alter type with typealias
Kotlin Vocabulary: typealias
#Новости
Android Broadcast - это уже не только Telegram канал, но и подкаст. Вы можете найти все выпуски (их пока 4) на множестве площадок. Уже 2 записанных подкаста и находятся на стадии постобработки. Подписывайтесь, что узнать о них первым:
👉 SoundCloud
👉 Google Podcasts
👉 Pocket Casts
👉 Castbox
👉 Apple Podcasts
👉 Spotify
👉 Яндекс Музыка
👉 YouTube
Android Broadcast - это уже не только Telegram канал, но и подкаст. Вы можете найти все выпуски (их пока 4) на множестве площадок. Уже 2 записанных подкаста и находятся на стадии постобработки. Подписывайтесь, что узнать о них первым:
👉 SoundCloud
👉 Google Podcasts
👉 Pocket Casts
👉 Castbox
👉 Apple Podcasts
👉 Spotify
👉 Яндекс Музыка
👉 YouTube
Android Broadcast призывает на помощь
Всем привет! Меня зовут Кирилл Розов. Я автор канала "Android Broadcast". Канал заметно вырос с момента своего появления. Проект идет дальше и о Android Broadcast нельзя сказать только в рамках Telegram канала. Сейчас вы уже можете найти видео на YouTube канале и подкасты на SoundCloud, Apple Podcasts, YouTube и др. площадках
За всем этим контентом стоят часы подготовки и часы постобработки. Хочется развиваться активнее и делать больше интересного материала, но в силу того что проект некоммерческий, я не могу уделять ему все свое время. Поэтому хочу обратиться к вам по трём поводам:
1️⃣ Присоединяйтесь к команде Android Broadcast!
Работе в проекте много и пригодятся все ваши навыки, как технические, так и нет. Задач много и разных: графический дизайн, помочь с сайтом. управлением контентом, постобработка записей подкастов. продвижение и др.
Если у вас есть желание помочь, то обязательно пишите
2️⃣ Подписаться на Android Broadcast
Просьба довольна стандартная, но очень важная для создателей контента, так как это позволяет привлекать больше внимание аудитории вне подписчиков и пиарить проект активнее. Подписывайтесь:
👉 Android Broadcast YouTube канал
👉 Android Broadcast Twitter
👉 Персональный Twitter Кирилла Розова
👉 SoundCloud
👉 Google Podcast
👉 Apple Podcasts
3️⃣ Помочь Android Broadcast материально
Проект «Android Broadcast» некоммерческий и все затраты кладутся на мои плечи. Расходы растут с появлением нового контента: подписки на сервисы, оборудование, продвижение и пр. Если вы хотите помочь Android Broadcast, то это можно сделать через Patreon.
Присоединяйтесь и давайте развивать проект для сообщества вместе!
С большим уважением ко всем читателям и благодарность за поддержку, автор "Android Broadcast" Кирилл Розов
Всем привет! Меня зовут Кирилл Розов. Я автор канала "Android Broadcast". Канал заметно вырос с момента своего появления. Проект идет дальше и о Android Broadcast нельзя сказать только в рамках Telegram канала. Сейчас вы уже можете найти видео на YouTube канале и подкасты на SoundCloud, Apple Podcasts, YouTube и др. площадках
За всем этим контентом стоят часы подготовки и часы постобработки. Хочется развиваться активнее и делать больше интересного материала, но в силу того что проект некоммерческий, я не могу уделять ему все свое время. Поэтому хочу обратиться к вам по трём поводам:
1️⃣ Присоединяйтесь к команде Android Broadcast!
Работе в проекте много и пригодятся все ваши навыки, как технические, так и нет. Задач много и разных: графический дизайн, помочь с сайтом. управлением контентом, постобработка записей подкастов. продвижение и др.
Если у вас есть желание помочь, то обязательно пишите
2️⃣ Подписаться на Android Broadcast
Просьба довольна стандартная, но очень важная для создателей контента, так как это позволяет привлекать больше внимание аудитории вне подписчиков и пиарить проект активнее. Подписывайтесь:
👉 Android Broadcast YouTube канал
👉 Android Broadcast Twitter
👉 Персональный Twitter Кирилла Розова
👉 SoundCloud
👉 Google Podcast
👉 Apple Podcasts
3️⃣ Помочь Android Broadcast материально
Проект «Android Broadcast» некоммерческий и все затраты кладутся на мои плечи. Расходы растут с появлением нового контента: подписки на сервисы, оборудование, продвижение и пр. Если вы хотите помочь Android Broadcast, то это можно сделать через Patreon.
Присоединяйтесь и давайте развивать проект для сообщества вместе!
С большим уважением ко всем читателям и благодарность за поддержку, автор "Android Broadcast" Кирилл Розов
#SQLite #Room
SQLite Triggers (+ Android Room)
SQLite - самая популярная БД в мобильных ОС. Почему? Немалую роль сыграло в этом ее встраивание в мобильные ОС и схожесть синтаксиса запросов с SQL. В Android вы также могли слышать о библиотеке Room, которая является ORM для SQLite и значительно упрощает работу с получением данных, а также получением их обновлений через
В статье автор разбирается в механизме SQLite Trigger и как оповещается об обновление данных в Room.
SQLite Triggers (+ Android Room)
SQLite - самая популярная БД в мобильных ОС. Почему? Немалую роль сыграло в этом ее встраивание в мобильные ОС и схожесть синтаксиса запросов с SQL. В Android вы также могли слышать о библиотеке Room, которая является ORM для SQLite и значительно упрощает работу с получением данных, а также получением их обновлений через
LiveData
, RxJava Observable
или Coroutines Flow
.В статье автор разбирается в механизме SQLite Trigger и как оповещается об обновление данных в Room.
Medium
SQLite Triggers (+ Android Room)
Diving into SQLite Triggers and Android Room internals