Android Broadcast
14.2K subscribers
3.53K photos
341 videos
11 files
5.9K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @ab_manager

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#MemoryLeak #ViewBinding

Avoiding memory leaks when using Data Binding and View Binding

При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в onDestroyView() и создаются в onCreateView().

Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
#Coroutines #Testing #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, но появится.
#Android11 #Animations

Animating your keyboard (part 2): Reacting to WindowInset animations

Во второй части рассказывается про интеграцию со слушателем WindowInsets в Android 11 на основе нового API WindowInsetsAnimation
#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

Подписывайтесь на канал, чтобы не пропустить новые видео и поддержать автора
#Lint #CodeQuality

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, чтобы реализовать темную тему у себя в приложении.
#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

Замечание: пытался найти что за изменения произошли в библиотеках, но кроме перечисления обновленных библиотек ничего нет (
#Gradle

apkscale

Gradle плагин, который позволит определить какой эффект на размер приложения оказывает Android библиотека. Всем кто более за размер приложения будет полезно.
#Testing #Coverage

Code Coverage Best Practices

Чтобы понять насколько хорошо покрыто тестами ваше приложение, надо это измерить. Google делиться своим опытом по покрытию тестами проектов и как это сделать.
#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
Будете пробовать альфу 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 и позволит передать результат между Fragment в рамках одного. FragmentManager проще.

В статье разбирается как работать с новым API и его тестирование
#Awareness

Smarter apps with Awareness API

Google Awareness API позволяет вам отслеживать изменения вокруг пользователя с помощью сенсоров устройств и получать информацию о текущем состоянии.

Что можно сделать? Например, легко отследить состояние подключения наушников, отследить активность пользователя (бег, ходьба и др.). Мало того API может предсказывать ближайшие активности пользователя
#Kotlin #SAM

Support for Kotlin SAM in release 1.4

SAM (Single Abstract Method) - это интерфейс у которого только 1 метод без реализации по умолчанию. Также такие интерфейсы называют Functional Interface.

В Kotlin 1.4 добавили возможность использовать SAM Kotlin интерфейсы, к уже существующей поддержки только Java SAM.

В статье рассматривается адаптация нового функции языка в вашем коде
#Material #Animation

Adding Amazing Transitions to Your Android App Easily Using Material Motion

В последнем релизе Material Components 1.2.0 добавили реализацию стандартны анимаций из Material Motion. В статье разбирают как их использовать и получить крутые результаты.
#JetpackCompose #UnderTheHood

Understanding Jetpack Compose — Part 1 of 2

Совсем недавно была анонсирована альфа Jetpack Compose. Вместе с этим нам стало доступно множество обучающих материалов и документации.

В статье разбираются базовые принципы декларативного подхода в UI и чем он отличается привычному Android разработчику иерархии View + XML
#JetpackCompose #UnderTheHood

Under the hood of Jetpack Compose — part 2 of 2

Продолжение раскрытие деталей реализации Jetpack Compose. Во второй части вы найдете ответы на вопросы:
👉 Что значит аннотация @Composable
👉 В чем похожи @Composable и suspend из Kotlin
👉 Как строится UI в Jetpack Compose
👉 Что такое Composer
👉 Как устроена работа с входными параметрами и обновлением UI в Jetpack Compose

Важно: чтобы работать с Jetpack Compose вам не нужно понять детали этой статьи
#Android10 #Thermal

Thermal in Android

Хотите узнать насколько горячее ваше приложение? Вы сможете это сделать в Android 10 с помощью нового Thermal API. Оно также доступно в NDK, но только с Android 11.

Кому это может быть полезно? Разработчикам игр и всех приложений, кто активно используется железо устройства, например приложения камеры во время съемки видео.
#Gradle #Performance

The proper care and feeding of your Gradle build

Скорость сборки Gradle проекта - это всегда боль для Android проектов. Негативно на скорость сборки могут влиять зависимости, процессоры аннотаций и Gradle плагины.

С помощью Gradle плагина от автора статьи вы можете проанализировать ваш проект и понять какие зависимости:
👉 Не используются в вашем проекте
👉 Какие процессоры аннотаций не используются в вашем проекте
👉 Объявляете ли вы зависимости корректно (apiimplementationcompileOnly и др)
👉 Используете ли вы код из транзитивных зависимостей, которые лучше определить явно
👉 Есть ли у вас неиспользуемые Gradle плагины

Анализировать ваш проект стоит регулярно, что позволит четко следить за вашими зависимостями. Возможно задуматься о запуске плагина на CI частью ПРов