#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
#Testing #Espresso #Jetpack
Вышла библиотека AndroidX Test 1.3.0
👉 Core 1.3.0
👉 Espresso 3.3.0
👉 Intents 3.3.0
👉 JUnit 1.1.2
👉 Monitor 1.3.0
👉 Orchestrator 1.3.0
👉 Runner 1.3.0
👉 Rules 1.3.0
👉 Truth 1.3.0
👉 Test Services 1.3.0
Замечание: пытался найти что за изменения произошли в библиотеках, но кроме перечисления обновленных библиотек ничего нет (
Вышла библиотека AndroidX Test 1.3.0
👉 Core 1.3.0
👉 Espresso 3.3.0
👉 Intents 3.3.0
👉 JUnit 1.1.2
👉 Monitor 1.3.0
👉 Orchestrator 1.3.0
👉 Runner 1.3.0
👉 Rules 1.3.0
👉 Truth 1.3.0
👉 Test Services 1.3.0
Замечание: пытался найти что за изменения произошли в библиотеках, но кроме перечисления обновленных библиотек ничего нет (
#Gradle
apkscale
Gradle плагин, который позволит определить какой эффект на размер приложения оказывает Android библиотека. Всем кто более за размер приложения будет полезно.
apkscale
Gradle плагин, который позволит определить какой эффект на размер приложения оказывает Android библиотека. Всем кто более за размер приложения будет полезно.
GitHub
GitHub - twilio/apkscale: A Gradle plugin to measure the app size impact of Android libraries
A Gradle plugin to measure the app size impact of Android libraries - GitHub - twilio/apkscale: A Gradle plugin to measure the app size impact of Android libraries
#Testing #Coverage
Code Coverage Best Practices
Чтобы понять насколько хорошо покрыто тестами ваше приложение, надо это измерить. Google делиться своим опытом по покрытию тестами проектов и как это сделать.
Code Coverage Best Practices
Чтобы понять насколько хорошо покрыто тестами ваше приложение, надо это измерить. Google делиться своим опытом по покрытию тестами проектов и как это сделать.
Google Testing Blog
Code Coverage Best Practices
By Carlos Arguelles, Marko Ivanković, and Adam Bender We have spent several decades driving software testing initiatives in various very la...
#JetpackCompose #UI
Announcing Jetpack Compose Alpha!
Вышла первая альфа-версия Jetpack Compose 🚀! API все еще нестабильное и могут происходить изменения в нем до Beta
Альфа релиз включает в себя:
👉 Анимация
👉 Constraint Layout
👉 Базовую поддержку A11Y
👉 Ввод и жесты
👉 Взаимодействие с View (полный interop)
👉 Lazy Lists
👉 Material UI
👉 Улучшения в производительности
👉 Тестирование
👉 Темы и графику
👉 Управление окнами
Android Studio 4.2 включает целый ряд инструментов, чтобы удобно работать с Jetpack Compose.
👉 Новые каноничные примеры Jetpack Compose
👉 "Изучение шаг за шагом" - цикл статей и Codelab
👉 Документация
Также рекомендую посмотреть новые видео:
📺 Compose for existing apps (22:05) - интеграция Compose в существующие приложения
📺 Thinking in Compose (25:27) - как правильно мыслить о построение UI в шаблонах Compose
📺 Compose by example (22:07) - примеры использования Compose
Announcing Jetpack Compose Alpha!
Вышла первая альфа-версия Jetpack Compose 🚀! API все еще нестабильное и могут происходить изменения в нем до Beta
Альфа релиз включает в себя:
👉 Анимация
👉 Constraint Layout
👉 Базовую поддержку A11Y
👉 Ввод и жесты
👉 Взаимодействие с View (полный interop)
👉 Lazy Lists
👉 Material UI
👉 Улучшения в производительности
👉 Тестирование
👉 Темы и графику
👉 Управление окнами
Android Studio 4.2 включает целый ряд инструментов, чтобы удобно работать с Jetpack Compose.
👉 Новые каноничные примеры Jetpack Compose
👉 "Изучение шаг за шагом" - цикл статей и Codelab
👉 Документация
Также рекомендую посмотреть новые видео:
📺 Compose for existing apps (22:05) - интеграция Compose в существующие приложения
📺 Thinking in Compose (25:27) - как правильно мыслить о построение UI в шаблонах Compose
📺 Compose by example (22:07) - примеры использования Compose
Android Developers Blog
Announcing Jetpack Compose Alpha!
Posted by Karen Ng , Director, Product Management Today, we’re releasing the alpha of Jetpack Compose , our modern UI toolkit desig...
Будете пробовать альфу Jetpack Compose в production приложениях?
Anonymous Poll
11%
Да
17%
Жду Beta
43%
Жду Stable
14%
Не планирую использовать Compose
15%
Не участвую в опросе
#Fragment
Android Fragment Result Listener (RU)
Разбор нового API Fragment - Fragment Result API, которое заменить Fragment Target API и позволит передать результат между
В статье разбирается как работать с новым API и его тестирование
Android Fragment Result Listener (RU)
Разбор нового API Fragment - Fragment Result API, которое заменить Fragment Target API и позволит передать результат между
Fragment
в рамках одного. FragmentManager
проще.В статье разбирается как работать с новым API и его тестирование
Хабр
Android Fragment Result Listener
В Android передача данных между фрагментами может осуществляться разными способами: передача через родительскую Activity, используя ViewModel или даже Fragment...
#Awareness
Smarter apps with Awareness API
Google Awareness API позволяет вам отслеживать изменения вокруг пользователя с помощью сенсоров устройств и получать информацию о текущем состоянии.
Что можно сделать? Например, легко отследить состояние подключения наушников, отследить активность пользователя (бег, ходьба и др.). Мало того API может предсказывать ближайшие активности пользователя
Smarter apps with Awareness API
Google Awareness API позволяет вам отслеживать изменения вокруг пользователя с помощью сенсоров устройств и получать информацию о текущем состоянии.
Что можно сделать? Например, легко отследить состояние подключения наушников, отследить активность пользователя (бег, ходьба и др.). Мало того API может предсказывать ближайшие активности пользователя
Medium
Smarter apps with Awareness API
Making a know-it-all, without pulling your hair
#Kotlin #SAM
Support for Kotlin SAM in release 1.4
SAM (Single Abstract Method) - это интерфейс у которого только 1 метод без реализации по умолчанию. Также такие интерфейсы называют Functional Interface.
В Kotlin 1.4 добавили возможность использовать SAM Kotlin интерфейсы, к уже существующей поддержки только Java SAM.
В статье рассматривается адаптация нового функции языка в вашем коде
Support for Kotlin SAM in release 1.4
SAM (Single Abstract Method) - это интерфейс у которого только 1 метод без реализации по умолчанию. Также такие интерфейсы называют Functional Interface.
В Kotlin 1.4 добавили возможность использовать SAM Kotlin интерфейсы, к уже существующей поддержки только Java SAM.
В статье рассматривается адаптация нового функции языка в вашем коде
👨💻 Jorge Castillo
Support for Kotlin SAM in release 1.4
About Kotlin SAM support for Java interoperability and also for Kotlin interfaces starting on release 1.4. 🤷 SAM? This feature also exists in other JVM languages like Java 8 or Scala. SAM stands for Single Abstract Method and it refers to interfaces with…
#Material #Animation
Adding Amazing Transitions to Your Android App Easily Using Material Motion
В последнем релизе Material Components 1.2.0 добавили реализацию стандартны анимаций из Material Motion. В статье разбирают как их использовать и получить крутые результаты.
Adding Amazing Transitions to Your Android App Easily Using Material Motion
В последнем релизе Material Components 1.2.0 добавили реализацию стандартны анимаций из Material Motion. В статье разбирают как их использовать и получить крутые результаты.
Medium
Adding Amazing Transitions to Your Android App Easily Using Material Motion
Getting Started 🎬