#Conferenсe #Online
2020 год получился очень насыщенным на события. Но впереди еще осень, а это значит, что конференционный сезон в самом разгаре! Вопреки всему, уже 11-14 ноября пройдет Mobius 2020 Moscow. И снова в онлайне!
После летней онлайн-конференции ребята получили много разнообразных отзывов, и теперь усиленно работают над опытом онлайн-спикеров, пытаясь обеспечить обратную связь с аудиторией, живое общение с экспертами в рамках выступления, и даже планируют сделать почти все доклады парными!
Программный комитет конференции постарается найти содокладчика или эксперта, который поддержит темп доклада и поможет вовлечь аудиторию в диалог, чтобы у вас не было впечатления «разговора с монитором».
Если вы еще думаете, стоит ли участвовать - вот вам знак 🙂 Переходите по ссылке, заполняйте форму подачи заявки на доклад и становитесь спикером Mobius 2020 Moscow. Стоит поспешить, приём заявок открыт до 31 августа!
По всем вопросам можно писать @OksanaMiroshnichenko
2020 год получился очень насыщенным на события. Но впереди еще осень, а это значит, что конференционный сезон в самом разгаре! Вопреки всему, уже 11-14 ноября пройдет Mobius 2020 Moscow. И снова в онлайне!
После летней онлайн-конференции ребята получили много разнообразных отзывов, и теперь усиленно работают над опытом онлайн-спикеров, пытаясь обеспечить обратную связь с аудиторией, живое общение с экспертами в рамках выступления, и даже планируют сделать почти все доклады парными!
Программный комитет конференции постарается найти содокладчика или эксперта, который поддержит темп доклада и поможет вовлечь аудиторию в диалог, чтобы у вас не было впечатления «разговора с монитором».
Если вы еще думаете, стоит ли участвовать - вот вам знак 🙂 Переходите по ссылке, заполняйте форму подачи заявки на доклад и становитесь спикером Mobius 2020 Moscow. Стоит поспешить, приём заявок открыт до 31 августа!
По всем вопросам можно писать @OksanaMiroshnichenko
#Fragment
Fragments: Rebuilding the Internals
В релизе Fragment 1.3.0-alpha08 произошел рефакторинг Fragment под капотом. Одна из новинок - FragmentStateManager, в который было выделено много логики из
FragmentStateManager отвечает за:
👉 Переход Fragment между методами его жизненного цикла
👉 Запуск анимаций
👉 Выполнение отложенных транзакций
Благодаря этому рефакторингу:
👉 было закрыто более 10 багов долгожителей в Fragment
👉 дало дорогу поддержки множеству back stack-ов в рамках одного FragmentManager
👉 Заложена основа для упрощения жизненного цикла Fragment
Fragments: Rebuilding the Internals
В релизе Fragment 1.3.0-alpha08 произошел рефакторинг Fragment под капотом. Одна из новинок - FragmentStateManager, в который было выделено много логики из
Fragment
.FragmentStateManager отвечает за:
👉 Переход Fragment между методами его жизненного цикла
👉 Запуск анимаций
👉 Выполнение отложенных транзакций
Благодаря этому рефакторингу:
👉 было закрыто более 10 багов долгожителей в Fragment
👉 дало дорогу поддержки множеству back stack-ов в рамках одного FragmentManager
👉 Заложена основа для упрощения жизненного цикла Fragment
Medium
Fragments: rebuilding the internals
Introducing: the new state manager
#Jetpack
Обновление Jetpack 19.08.2020
👉 Concurrent 1.1.0: поддержка ListenableFuture и Kotlin Coroutines
👉 Webkit 1.3.0: улучшения в работе с темной темой и возможность проверки работает ли WebView в отдельном процессе
👉 Fragment 1.3.0-alpha08: переписана работа с состоянием Fragment, что позволило закрыть множество старых багов
👉 AppCompat 1.3.0-alpha02: заменили растровую графику векторной, WindowInsetsCompat стало использовать Android 11 API
👉 Biometric 1.1.0-alpha02: портированы API из Android 11, исправление багов и утечек памяти
👉 Core 1.5.0-alpha02: новые API для
👉 Множество новых beta релизов
Обновление Jetpack 19.08.2020
👉 Concurrent 1.1.0: поддержка ListenableFuture и Kotlin Coroutines
👉 Webkit 1.3.0: улучшения в работе с темной темой и возможность проверки работает ли WebView в отдельном процессе
👉 Fragment 1.3.0-alpha08: переписана работа с состоянием Fragment, что позволило закрыть множество старых багов
👉 AppCompat 1.3.0-alpha02: заменили растровую графику векторной, WindowInsetsCompat стало использовать Android 11 API
👉 Biometric 1.1.0-alpha02: портированы API из Android 11, исправление багов и утечек памяти
👉 Core 1.5.0-alpha02: новые API для
NotificationCompat
и WindowInsetsCompat
👉 Множество новых beta релизов
#Jetpack #Security
Новая библиотека Security Identity Credential
Библиотека предоставляет бэкпорт нового API из Android 11 и использовать его, начиная с API 24 ( Android 7.0)
Новая библиотека Security Identity Credential
Библиотека предоставляет бэкпорт нового API из Android 11 и использовать его, начиная с API 24 ( Android 7.0)
#GooglePlay
Google Play In-App Review API: integration and experience
В последней версии библиотеки Google Play Core появилась возможность оставлять отзывы на приложения напрямую из приложения без необходимости открытия Google Play.
В статье рассматривается опыт интеграции этой возможности и тестирование этой возможности. Как результат рост количества отзывов в 5 раз!
Google Play In-App Review API: integration and experience
В последней версии библиотеки Google Play Core появилась возможность оставлять отзывы на приложения напрямую из приложения без необходимости открытия Google Play.
В статье рассматривается опыт интеграции этой возможности и тестирование этой возможности. Как результат рост количества отзывов в 5 раз!
Medium
Google Play In-App Review API: integration and experience
Google Play Core library version 1.8.0 brings a long-awaited feature: native in-app review dialog. I added it to the latest version of…
#Test
Автотесты на Android. Картина целиком
Как выстроить автотесты в вашем проекте? Это тяжело? В команде Avokado так не считают и в статье отвечают на ряд вопросов:
👉 Зачем нужны автотесты?
👉 Процесс написания тестов
👉 Инструменты
👉 Где запускать тесты?
👉 Инфраструктура
Автотесты на Android. Картина целиком
Как выстроить автотесты в вашем проекте? Это тяжело? В команде Avokado так не считают и в статье отвечают на ряд вопросов:
👉 Зачем нужны автотесты?
👉 Процесс написания тестов
👉 Инструменты
👉 Где запускать тесты?
👉 Инфраструктура
Хабр
Автотесты на Android. Картина целиком
Всем привет! Автотесты под Android — это непросто. Чтобы выстроить процесс автотестирования, надо запланировать и решить множество задач. Но самая большая беда заключается в том, что нигде нет полного...
#Design #Material
Android Design System and Theming: Typography
Подробный разбор работы со шрифтами в Material Design на Android:
👉 Ресурсы шрифтов
👉 Стандартные стили
👉 Система шрифтов Material Design
👉 Темы и стили для текста в Android
Android Design System and Theming: Typography
Подробный разбор работы со шрифтами в Material Design на Android:
👉 Ресурсы шрифтов
👉 Стандартные стили
👉 Система шрифтов Material Design
👉 Темы и стили для текста в Android
Medium
Android Design System and Theming: Typography
Android Design System and Android Theming can help us to have a simple, powerful, and easy to maintain application theme.
#RecyclerView
RecyclerView.ItemDecoration: используем по максимуму
RecyclerView есть в любом нативном Android приложении. В статье делятся опытом применения
RecyclerView.ItemDecoration: используем по максимуму
RecyclerView есть в любом нативном Android приложении. В статье делятся опытом применения
ItemDecoration
. С помощью этого класса можно решить много задач интересным образом и более эффективно чем через ViewХабр
RecyclerView.ItemDecoration: используем по максимуму
Привет, дорогой читатель Хабра. Меня зовут Олег Жило, последние 4 года я Android-разработчик в Surf . За это время я поучаствовал в разного рода крутых проектах, но и с легаси-кодом поработать...
#RxJava
RxRelay – это магия? Subject vs RxRelay
Для всех кому нравится работать с Rxjava и приходится это делать (Coroutine победят!). Альтернатива Subject - RxRelay. В статье происходит разбор решения и их отличия
RxRelay – это магия? Subject vs RxRelay
Для всех кому нравится работать с Rxjava и приходится это делать (Coroutine победят!). Альтернатива Subject - RxRelay. В статье происходит разбор решения и их отличия
Хабр
RxRelay – это магия? Subject vs RxRelay
В Android-комьюнити я встречал три типа разработчиков, которые сталкивались с RxRelay: Те, кто не понимают зачем RxRelay используется в их проекте, зачем он...
#Performance
Assets or Resource Raw folder of Android?
В Android есть возможность 2 образами положить произвольные файлы - aasets и raw ресурсы. Что выбрать? Что быстрее? Что займёт меньше места в APK?
В статье найдёте сравнение
Assets or Resource Raw folder of Android?
В Android есть возможность 2 образами положить произвольные файлы - aasets и raw ресурсы. Что выбрать? Что быстрее? Что займёт меньше места в APK?
В статье найдёте сравнение
Medium
Assets or Resource Raw folder of Android?
Guide to put your raw asset in the right location
#Firebase #Analytics
New API for manually tracking screen views in Google Analytics
В Firebase Analytics появилась возможность вручную трекать показы экраны на Android и iOS. Событие
Когда это может пригодиться:
👉 Отправка события когда пользователь провел какое-то время на экране (не было случайного входа на экран)
👉 Экраны в вашем приложении, которые автоматическая статистика понять не могла, например дочерние View или Fragment
Старое API setCurrentScreen стало deprecated и надо с него уходить. В статье есть гайд как это сделать
New API for manually tracking screen views in Google Analytics
В Firebase Analytics появилась возможность вручную трекать показы экраны на Android и iOS. Событие
screen_view
теперь можно отправить самостоятельно и иметь больше контроля за нимКогда это может пригодиться:
👉 Отправка события когда пользователь провел какое-то время на экране (не было случайного входа на экран)
👉 Экраны в вашем приложении, которые автоматическая статистика понять не могла, например дочерние View или Fragment
Старое API setCurrentScreen стало deprecated и надо с него уходить. В статье есть гайд как это сделать
The Firebase Blog
New API for manually tracking screen views in Google Analytics
#ConstraintLayout #MotionLayout
Вышел ConstraintLayout 2.0
Наконец-то вышел стабильный релиз долгостроя AndroidX - ConstraintLayout 2.0
Что нового:
👉 Улучшенный Runtime
👉 Новый механизм Flow, нечто подобное Chain, позволяющее управлять позиционированием группой виджетов горизонтально или вертикально
👉 Новый helper Layer
👉 Простой способ строить анимации с помощью MotionLayout
👉 Обновленный Layout Editor в Android Studio 4.1 с поддержкой ConstraintLayout 2.0
👉 MotionEditor - визуальный редактор анимаций, доступный с Android Studio 4.0
Примеры использования можно найти здесь
Вышел ConstraintLayout 2.0
Наконец-то вышел стабильный релиз долгостроя AndroidX - ConstraintLayout 2.0
Что нового:
👉 Улучшенный Runtime
👉 Новый механизм Flow, нечто подобное Chain, позволяющее управлять позиционированием группой виджетов горизонтально или вертикально
👉 Новый helper Layer
👉 Простой способ строить анимации с помощью MotionLayout
👉 Обновленный Layout Editor в Android Studio 4.1 с поддержкой ConstraintLayout 2.0
👉 MotionEditor - визуальный редактор анимаций, доступный с Android Studio 4.0
Примеры использования можно найти здесь
#Kotlin #DSL #Lint
Kotlin DSL —defining mandatory parameters
Kotlin DSL - удобный способ заменить Builder и позволить описывать создание сложных объектов более явно, в особенности когда они имеют вложенности.
Проблема DSL что нельзя каким-то образом проверить, что разработчик использовал все необходимые поля. Такая проверка могла пройти в коде в рантайме или нужно было требовать заполнение во вне DSL.
В статье автор рассказывает о свое библиотеке DSLint, которая на основе Android Lint делает проверку того что все необходимые поля были заполнены.
Kotlin DSL —defining mandatory parameters
Kotlin DSL - удобный способ заменить Builder и позволить описывать создание сложных объектов более явно, в особенности когда они имеют вложенности.
Проблема DSL что нельзя каким-то образом проверить, что разработчик использовал все необходимые поля. Такая проверка могла пройти в коде в рантайме или нужно было требовать заполнение во вне DSL.
В статье автор рассказывает о свое библиотеке DSLint, которая на основе Android Lint делает проверку того что все необходимые поля были заполнены.
Medium
Kotlin DSL —defining mandatory parameters
Or, why I wrote another Android library
#MemoryLeak #ViewBinding
Avoiding memory leaks when using Data Binding and View Binding
При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в
Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
Avoiding memory leaks when using Data Binding and View Binding
При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в
onDestroyView()
и создаются в onCreateView()
.Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
Medium
Avoiding memory leaks when using Data Binding and View Binding
In our current project we are using a lot of Data Binding and recently we have started using View Binding as well.
#Coroutines #Testing #Flow
Turbine - маленькая библиотека для тестирования kotlinx.coroutines Flow
Автор - Jake Wharton
Библиотека позволяет проверить какие данные были проэмичены в Flow
Turbine - маленькая библиотека для тестирования kotlinx.coroutines Flow
Автор - Jake Wharton
Библиотека позволяет проверить какие данные были проэмичены в Flow
#Android11 #Animations
Animating your Keyboard (part 1)
В Android 11 появилась возможность создавать плавные анимации UI при открытии/закрытии системной клавиатуры, благодаря множествам улучшений в WindowInsets, которые также доступны в WindowInsetsCompat.
Чтобы поддержать новую возможность вам надо:
1️⃣ Добавить поддержку edge-to-edge в ваше приложение (отрисовка под системными панелями)
2️⃣ Добавить слушателя на изменение отступа при открытии/закрытии клавиатуры
3️⃣ Добавить реакцию на изменения
В первой части рассказывается про то как сделать приложение "edge-to-edge", новые API WindowInsets в Android 11 и рекомендации по использованию.
Помимо всего появилось новое API - WindowInsetsController, позволяющее показать/скрыть клавиатуру и много чего другого. Это API заменило собой работу с показом/скрытием системного UI и настройкой его отображения, например Immersive Mode. WindowInsetsController пока нет в AndroidX, но появится.
Animating your Keyboard (part 1)
В Android 11 появилась возможность создавать плавные анимации UI при открытии/закрытии системной клавиатуры, благодаря множествам улучшений в WindowInsets, которые также доступны в WindowInsetsCompat.
Чтобы поддержать новую возможность вам надо:
1️⃣ Добавить поддержку edge-to-edge в ваше приложение (отрисовка под системными панелями)
2️⃣ Добавить слушателя на изменение отступа при открытии/закрытии клавиатуры
3️⃣ Добавить реакцию на изменения
В первой части рассказывается про то как сделать приложение "edge-to-edge", новые API WindowInsets в Android 11 и рекомендации по использованию.
Помимо всего появилось новое API - WindowInsetsController, позволяющее показать/скрыть клавиатуру и много чего другого. Это API заменило собой работу с показом/скрытием системного UI и настройкой его отображения, например Immersive Mode. WindowInsetsController пока нет в AndroidX, но появится.
Medium
Animating your Keyboard
New WindowInsets APIs for checking the keyboard (IME) visibility and size
#Android11 #Animations
Animating your keyboard (part 2): Reacting to WindowInset animations
Во второй части рассказывается про интеграцию со слушателем
Animating your keyboard (part 2): Reacting to WindowInset animations
Во второй части рассказывается про интеграцию со слушателем
WindowInsets
в Android 11 на основе нового API WindowInsetsAnimationMedium
Animating your keyboard: Reacting to inset animations
#AndroidBroadcast #Kotlin #Multiplatform
Разбор Kotlin 1.4: быстрее и лучше (Livestream)
Обсуждаем новую версию Kotlin с Developer Advocate из JetBrains Светланой Исаковой и командой Android Dev Podcast! Разбираем всё: синтаксис языка, библиотеки KotlinX, улучшения в IDE и Multiplatform
Помимо прочего во время стрима будет проводиться розыгрыш ценных призов для настоящих Kotlin программистов!
Соведущие:
- Михаил Емельянов, Head of Android Dev в ЦФТ
- Вадим Котов, Android Developer в AdCombo
- Дмитрий Мовчан, Android Software Engineer в Revolut
Подписывайтесь на канал, чтобы не пропустить новые видео и поддержать автора
Разбор Kotlin 1.4: быстрее и лучше (Livestream)
Обсуждаем новую версию Kotlin с Developer Advocate из JetBrains Светланой Исаковой и командой Android Dev Podcast! Разбираем всё: синтаксис языка, библиотеки KotlinX, улучшения в IDE и Multiplatform
Помимо прочего во время стрима будет проводиться розыгрыш ценных призов для настоящих Kotlin программистов!
Соведущие:
- Михаил Емельянов, Head of Android Dev в ЦФТ
- Вадим Котов, Android Developer в AdCombo
- Дмитрий Мовчан, Android Software Engineer в Revolut
Подписывайтесь на канал, чтобы не пропустить новые видео и поддержать автора
#Lint #CodeQuality
Android Lint Framework — An Introduction
Android Lint - специальная утилита для Android проектов, которая анализирует в нем различные файлы (код, ресурсы, Gradle скрипты и др.). Утилита обнаруживает нарушения правил, которым рекомендуется следовать.
Android Lint можно дополнить своими правилами. В статье разбирается создание правила по обнаружению использованию стандартного ImageView с предложением его замены на собственный.
Исходный код можно найти здесь
Android Lint Framework — An Introduction
Android Lint - специальная утилита для Android проектов, которая анализирует в нем различные файлы (код, ресурсы, Gradle скрипты и др.). Утилита обнаруживает нарушения правил, которым рекомендуется следовать.
Android Lint можно дополнить своими правилами. В статье разбирается создание правила по обнаружению использованию стандартного ImageView с предложением его замены на собственный.
Исходный код можно найти здесь
#Material #DarkTheme
Dark Theme with Material Design Components
Поддержка темной темы - это важная возможность приложения в современном мире, которая позволяет уменьшить нагрузку на глаза пользователя и экономить заряд батареи.
Material Design Component (MDC) из коробки поддерживают работу с темной темой. Доступна функция для Android 5.0 и выше.
В статье разбирается как вам правильно использовать компоненты и настроить Material Theme, чтобы реализовать темную тему у себя в приложении.
Dark Theme with Material Design Components
Поддержка темной темы - это важная возможность приложения в современном мире, которая позволяет уменьшить нагрузку на глаза пользователя и экономить заряд батареи.
Material Design Component (MDC) из коробки поддерживают работу с темной темой. Доступна функция для Android 5.0 и выше.
В статье разбирается как вам правильно использовать компоненты и настроить Material Theme, чтобы реализовать темную тему у себя в приложении.
Medium
Dark Theme with MDC
Using Material Design Components to implement a dark theme