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

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

РКН https://abdev.by/rkn_tg_ab
加入频道
Media is too big
VIEW IN TELEGRAM
📹 Jetpack Navigation 3 Core Concepts (EN,11м)

Рассказ про основные принципы новой навигации от Google для Compose - Jetpack Navigation 3

0:00 Вступление
1:05 Что есть Навигация
2:08 Архитектура
4:40 Требования
5:26 Почему это так сложно
7:01 Задачи Navigation 3
9:02 Владение Backstack-ом
10:04 Будущее

#android #jetpack #compose #навигация
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🤯94🤔1
Media is too big
VIEW IN TELEGRAM
📹 Embedded Layout Inspector (EN,6м)

Демонстрация возможностей встроенного в Android Studio инструмента Layout Inspector для дебага Compose UI

0:00 - Что за инструмент
1:31 - Как дебажить
5:26 - Итоги

#compose #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Forwarded from Compose Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
LazyTimetable - open source Jetpack Compose библиотека для реализация lazy расписания мероприятия или в школе/универе. Работает только на Android

#compose #android #opensource
🔥32👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🔨 Превью Compose можно будет изменять прямо в IDE

Google активно продвигает поддержку больших экранов и теперь тестировать UI на Compose в Android Studio будет проще. Изменять размер окна превью можно прямо в IDE и интерфейс будет подстраиваться под текущий размер.

Попробовать можно в свежей версии Android Studio Narhwall Feature Drop или новее. В Compose Preview надо переключить на режим "Focus"

#androidstudio #compose #ui
Please open Telegram to view this post
VIEW IN TELEGRAM
👍58🔥30
Media is too big
VIEW IN TELEGRAM
📹 Разбор Jetpack Navigation 3 - настоящая навигация для Compose (21 мин)

Месяц назад Google анонсировала навигацию специально разработанную под Compose и которая должна решить все боли. В видео показываю её возможности, делюсь своим мнение и рассказываю про недочеты, которые надеюсь что решат до стабильного релиза

#AndroidBroadcast #navigation #jetpack #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥10🤔43
🐱 Torrent Search - open source проект для поиска и скачивания с разных торрентов.

Стек: #kotlin, #material3, #compose, Ktor, Room

#android #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🤯174🔥2🎉1🤝1
⚙️ KRD Compose — это open source коллекция визуальных решений, разработанных с использованием Jetpack Compose сообществом Android Krasnodar.

Компоненты
👉 DataSlider — компонент слайдера для удобного просмотра данных.
👉 PascalTriangle — Кастомизируемый треугольник Паскаля.
👉 NumberSystemConverter — Конвертер систем счисления с визуализацией битов.

🎮 Игры
👉 Сапёр — реализация классической игры с настраиваемой сложностью и таймером
👉 Змейка — реализация классической игры "Змейка"
👉 Шахматы — реализация игры "Шахматы" человек vs человек с классическими правилами FIDE
👉 Колесо фортуны — реализация игры "Колесо фортуны". Крутите барабан!

#android #compose #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔33👍15🔥117
🚀 Jetpack Lifecycle позволит создавать дочерние Lifecycle в Compose

В Jetpack 2.10.0-alpha01 появилась новая Composable функция LifecycleOwner для создания дочернего Lifecycle. Изменение нужно для Navigation3.

@Composable
fun MyComposable() {
LifecycleOwner(
maxLifecycle = RESUMED,
parentLifecycleOwner = LocalLifecycleOwner.current,
) {
val childLifecycleOwner = LocalLifecycleOwner.current
}
}


#compose #jetpack #android #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔236👍4🔥4
💡 Надо регулярно следить за выполнением правил и лучших практик в коде

За годы работы в IT в разных компаниях и командах я понял одну простую вещь:
даже лучшие правила и практики будут нарушаться, если нет автоматической системы, которая их регулярно проверяет.

Сегодня поделюсь, как я подхожу к автоматизации контроля качества кода Android-проектов на Kotlin.
Рассматривать будем только статический анализ — когда код не выполняется, а анализируется как текст.


🛠 Инструменты для анализа кода
Detekt — статический анализатор Kotlin-кода. Работает быстро, так как проверяет файлы по отдельности, без учёта зависимостей между ними.
KtLint — проверка стиля кода. Настроек немного, но работает с конфигом .editorconfig, что удобно для командной разработки.
Android Lint — мощный инструмент для Android-проектов. Может анализировать разные типы исходников и проверять сразу несколько файлов по одному правилу.
⚠️ Запуск из Android Studio и через Gradle может иметь разные настройки. Полный контроль — через Gradle


⚙️ Дополнительно для Compose:
Compose Rules — правила для Detekt или KtLint, проверяющие соответствие best-practice работы с Compose.
Compose Rules от Slack — набор правил для Android Lint (частично пересекается с предыдущим, но есть уникальные).

🔐 Безопасность:
GitLeaks — поиск в коде секретов и данных, которые не должны попасть в репозиторий.
Можно смело комбинировать несколько линтеров. Лучше перебдеть, чем недопроверить.



🚀 Как запускать проверки
Я использую три уровня автоматизации:
1. Перед пушем кода — быстрые проверки (Detekt, KtLint) в pre-push hook.
⏱️ Цель — не больше 30 секунд, чтобы не раздражать разработчиков, но сразу отсеивать очевидные ошибки.
2. На CI/CD — полная проверка.
⏱️ Лимит — 10 минут. Обычно сюда входят все линтеры, кроме Android Lint, который может сильно замедлить процесс.
3. Ночные прогоны — расширенный Android Lint и тяжёлые правила, если в проекте были изменения.


🛠 Собственные правила
Стандартные линтеры могут покрыть только общие случае и правила, но если есть практики, которые надо форсировать для вашего кода то тут надо будет писать собственные правила. Для анализа Kotlin кода я пишу расширения для Detekt, а во всех остальных случаях - для Android Lint, но довольно редко.
📌 Бонус: AAR-библиотеки могут содержать свои Lint-правила, которые автоматически подключаются при их использовании.


💬 Делитесь в комментариях как вы следите за качеством вашего кода на регулярной основе и какие инструменты используете.

#android #compose #инструменты #ci
Please open Telegram to view this post
VIEW IN TELEGRAM
👍49🔥8🆒32
⚙️ Вышел Jetpack Compose 1.9 Stable (августа 2025)

Главные новинки:
👉 Тени нового поколения — dropShadow() и innerShadow() дают больше контроля, чем классический shadow().
👉 LazyLayout — новый API предзагрузки и кэширования элементов для более плавного скролла.
👉 2D-прокрутка — Scrollable2D для таблиц, карт и больших изображений.
👉 Расширенный stack trace — имена composable и их позиции для отладки в stacktrace (только в debug).
👉 Новые аннотации — @RememberInComposition, @FrequentlyChangingValue и перенос @Stable в отдельный модуль.

Подробнее буду рассказывать в @compose_broadcast. Подписывайтесь!

#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥57👍6
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Как использовать Compose, чтобы сделать анимированный Splash Screen

Разработчик создал библиотеку androidx-splashscreen-compose (не от Google решение), которая позволяет делать красивую анимацию как на анимашке.

Подробный разбор и реализация есть в статье (EN,6м, альт. ссылка) или 🐱 исходниках на GitHub

#android #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍7🤔2
🤖 Для Compose Material3 Adaptive добавили поддержку каноничных layout на основе библиотеке Navigation 3. Пока вышла первая альфа версия, но уже можно начинать работать. Подробности в анонсе

#compose #navigation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🚀 Отказываюсь от Списков в пользу Сеток в UI

Раньше для списков в Compose я по привычке использовал LazyColumn. Но чем больше работаю с адаптивными интерфейсами, тем очевиднее: это никуда не годиться и надо использовать доступное пространство, а не тупо растягивать интерфейс. Перехожу на Grid компоновку ✔️

LazyVerticalGrid позволяет задать фиксированную ширину колонки, и система сама рассчитает, сколько их поместится на экране.
В результате:
1️⃣ адаптивность «из коробки» на телефонах, планшетах и больших экранах
2️⃣ минимум дополнительного кода,
3️⃣единый компонент вместо костылей для разных форм-факторов.

LazyVerticalGrid(
columns = GridCells.Adaptive(minSize = 120.dp),
modifier = Modifier.fillMaxSize(),
contentPadding = PaddingValues(8.dp)
) {
items(100) { Item(...) }
}


Определение количества колонок происходит на основе политики GridCell:
// всегда N колонок
GridCells.Fixed(N)

// автоматический расчет на основе минимальной ширины колонки
GridCells.Adaptive(minSize = 120.dp)

// каждая ячейка шириной 100dp
GridCells.FixedSize(100.dp)


📱 На маленьком экране это будет 2–3 колонки, а на планшете — уже 5–6, и всё это без ручной логики.

Есть еще более гибкий вариант если элементы строк должны быть разной высоты - LazyVerticalStaggeredGrid (стиль как в Pinterest)

LazyVerticalStaggeredGrid(
columns = Adaptive(minSize = 150.dp),
modifier = Modifier.fillMaxSize(),
contentPadding = PaddingValues(8.dp)
) {
items(100) { Item(...) }
}


❗️ Теперь я придерживаюсь строго правила:
Если не могу явно сформулировать почему интерфейс должен быть в одну колонку, то вертикальный список брать не стоит!


🔗 Очень хорошо построение списков осветили в документации по Lazy Layout

Аналогично можно проделать и с RecyclerView, использую вместо LinearLayoutManager вариант с сеткой - GridLayoutManager или StaggeredGridLayoutManager, только там не будет автоматического расчета колонок на основе доступного места. Это придется реализовывать самостоятельно.

✍️ Что думаете о таком подходе для UI? Ударит по производительности?

#ui #android #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍93🤔17🏆9🔥81🙏1