#Fragment
Обновлена документация по Fragment
Документация по Fragment была написана давным давно (5+ лет назад). Что нового:
Создание Fragment:
👉 передача layout res в конструктор
👉
👉 получение аргументов
FragmentManager:
👉 отношения между fragment (parent и child)
👉 back stack
👉 setPrimaryNavigationFragment()
👉 FragmentFactory
FragmentTransaction:
👉 Почему всегда надо использовать setReorderingAllowed(true). Связано с анимациями и back stack
👉 setMaxLifecycle()
👉 Особенности show()/hide()
👉 Особенности attach()/detach()
Что еще нового:
👉 Fragment Shared Element Transition
👉 Обновление документации по жизненному циклу Fragment
👉 Особенности сохранения состояния Fragment
👉 Взаимодействие с Fragment: Shared ViewModel, Fragment Result API
👉 Взаимодействие с AppBar
👉 Использование DialogFragment
👉 Тестирование Fragment
Обновлена документация по Fragment
Документация по Fragment была написана давным давно (5+ лет назад). Что нового:
Создание Fragment:
👉 передача layout res в конструктор
👉
FragmentContainerView
👉 получение аргументов
FragmentManager:
👉 отношения между fragment (parent и child)
👉 back stack
👉 setPrimaryNavigationFragment()
👉 FragmentFactory
FragmentTransaction:
👉 Почему всегда надо использовать setReorderingAllowed(true). Связано с анимациями и back stack
👉 setMaxLifecycle()
👉 Особенности show()/hide()
👉 Особенности attach()/detach()
Что еще нового:
👉 Fragment Shared Element Transition
👉 Обновление документации по жизненному циклу Fragment
👉 Особенности сохранения состояния Fragment
👉 Взаимодействие с Fragment: Shared ViewModel, Fragment Result API
👉 Взаимодействие с AppBar
👉 Использование DialogFragment
👉 Тестирование Fragment
#CI #CD
Прокачиваем Android проект с GitHub Actions
GitHub - самый популярный сервис для хранения кода, особенно open source проектов. Не так давно на сервисе появилась фича GitHub Actions, которая позволяет автоматизировать ваши процессы, связанные с кодом в рамках GitHub.
В первой части статьи рассматривается настройка автоматической проверки кода на Pull Request и сборка релизных артефактов. Во второй части запускаются UI тесты в Firebase Test Lab
Прокачиваем Android проект с GitHub Actions
GitHub - самый популярный сервис для хранения кода, особенно open source проектов. Не так давно на сервисе появилась фича GitHub Actions, которая позволяет автоматизировать ваши процессы, связанные с кодом в рамках GitHub.
В первой части статьи рассматривается настройка автоматической проверки кода на Pull Request и сборка релизных артефактов. Во второй части запускаются UI тесты в Firebase Test Lab
#UI #Compose
Server-Driven UI for Android with Jetpack Compose
Jetpack Compose открывает новые горизонты, меняя взгляд на построения UI. Когда все переезжает из XML в код и становится ближе к бизнес логике, то этим становится проще управлять через сервер.
Например, сделать Server-Driven UI более эффективно чем это делалось на View. Автор статьи приводит в пример свое видение такой реализации
Server-Driven UI for Android with Jetpack Compose
Jetpack Compose открывает новые горизонты, меняя взгляд на построения UI. Когда все переезжает из XML в код и становится ближе к бизнес логике, то этим становится проще управлять через сервер.
Например, сделать Server-Driven UI более эффективно чем это делалось на View. Автор статьи приводит в пример свое видение такой реализации
#UI
Рисование собственных представлений (View) в Android
Android хоть и имеет богатый набор виджетов, но всегда приходится прибегать к специфичным кастомизациям или вовсе сделать что-то свое. Также ожно из важных причин является производительность, так как сложная иерархия View, которая позволит достичь результата, может получиться напорядок медленее.
В статье вы найдете руководство как сделать простой кастомный виджет на Kotlin
Рисование собственных представлений (View) в Android
Android хоть и имеет богатый набор виджетов, но всегда приходится прибегать к специфичным кастомизациям или вовсе сделать что-то свое. Также ожно из важных причин является производительность, так как сложная иерархия View, которая позволит достичь результата, может получиться напорядок медленее.
В статье вы найдете руководство как сделать простой кастомный виджет на Kotlin
#Location
Improving urban GPS accuracy for your app
Google улучшает позиционирование в больших городах. Заработает это для тех кто использует Fused Location Provider. Улучшения затрагивают 3850 городов, но Россия и Украина в них не попадает (
Improving urban GPS accuracy for your app
Google улучшает позиционирование в больших городах. Заработает это для тех кто использует Fused Location Provider. Улучшения затрагивают 3850 городов, но Россия и Украина в них не попадает (
Android Developers Blog
Improving urban GPS accuracy for your app
Posted by Frank van Diggelen, Principal Engineer and Jennifer Wang, Product Manager At Android, we want to make it as easy as possibl...
Решил выянсить по каким странам распределена аудитория канала. В какой стране находитесь Вы?
Final Results
49%
Россия
15%
Беларусь
22%
Украина
4%
Казахстан
2%
Страна ЕС
0%
США
7%
Другая страна
1%
Не участвую в опросе
#RecyclerView
Custom ItemDecoration
Наверняка вы знаете что разделять item'ы в RecyclerView путём добавления в их xml специального view-разделителя - это очень плохая практика. Для этих целей существует такой инструмент как ItemDecoration.
Благодаря тому что мы можем наследоваться от этой абстракции у нас открываются возможности разнообразной реализации, например:
👉 Убрать разделитель для последнего item'а
👉 Сделать специальные разделители для определённого ViewType
👉 Показывать уникальные разделители для item'ов на определённых позициях.
Автор подробно рассматривает все случаи кастомных декораций и даёт примеры кода для реализации в своих проектах
Custom ItemDecoration
Наверняка вы знаете что разделять item'ы в RecyclerView путём добавления в их xml специального view-разделителя - это очень плохая практика. Для этих целей существует такой инструмент как ItemDecoration.
Благодаря тому что мы можем наследоваться от этой абстракции у нас открываются возможности разнообразной реализации, например:
👉 Убрать разделитель для последнего item'а
👉 Сделать специальные разделители для определённого ViewType
👉 Показывать уникальные разделители для item'ов на определённых позициях.
Автор подробно рассматривает все случаи кастомных декораций и даёт примеры кода для реализации в своих проектах
Какие возможност RecyclerView вы используете? (множественный выбор)
Anonymous Poll
71%
ItemDecoration
11%
Шаринг RecycledViewPoll между 2+ RecyclerView
78%
DiffUtil
12%
ConcatAdapter (ex MergeAdapter)
15%
Пишу кастоный LayoutManager
30%
SnapHelper
23%
payload в методах RecyclerView.Adapter
4%
state restoration policy
6%
Другой вариант
10%
Не участвую в опросе
Android Broadcast
#Location Improving urban GPS accuracy for your app Google улучшает позиционирование в больших городах. Заработает это для тех кто использует Fused Location Provider. Улучшения затрагивают 3850 городов, но Россия и Украина в них не попадает (
Всем приношу извинения за то что написал Украина с маленькой буквы. Сделано было не со зла, а из-за опечатки т.к. слишком быстрый темп жизни постоянно дает о себе знать.
#AndroidBroadcast
Встречайте канал @kotlin_broadcast. В новом канале от автора @android_broadcast будет множество новостей которые касаются Kotlin и Multiplatform разработки.
Важно: Самые важные новости касательно Android разработки на Kotlin по-прежнему будут в @android_broadcast!
Встречайте канал @kotlin_broadcast. В новом канале от автора @android_broadcast будет множество новостей которые касаются Kotlin и Multiplatform разработки.
Важно: Самые важные новости касательно Android разработки на Kotlin по-прежнему будут в @android_broadcast!
#RecyclerView
How to Cook the 60 FPS RecyclerView?
Советы как сделать работу вашего RecyclerView максимально быстрой и плавной:
👉 Максимально простая иерархия View. И плоская
👉 Не стесняйтесь прибегать к Custom View, чтобы сделать иерархию плоской
👉 Большое количество уникальных типов элементов негативно влияет сна производительность
👉 Используйте оптимизации RecyclerView: DiffUtils, setHasFixedSize(), setItemViewCacheSize(), setRecycledViewPool()
How to Cook the 60 FPS RecyclerView?
Советы как сделать работу вашего RecyclerView максимально быстрой и плавной:
👉 Максимально простая иерархия View. И плоская
👉 Не стесняйтесь прибегать к Custom View, чтобы сделать иерархию плоской
👉 Большое количество уникальных типов элементов негативно влияет сна производительность
👉 Используйте оптимизации RecyclerView: DiffUtils, setHasFixedSize(), setItemViewCacheSize(), setRecycledViewPool()
This media is not supported in your browser
VIEW IN TELEGRAM
#AndroidBroadcast
Рад представить вам генерального партнёра проекта Android Broadcast - AvitoTech. Это очень классные ребята с отличной культурой разработки. У меня появилась возможность работать с ними ближе в рамках сотрудничества и я этому очень рад!
Если вам интересно присоединиться к их команде, то прямо сейчас они ищут Android разработчиков в команды:
🔥 Speed (CI/CD, фреймворки для тестирования и релизы)
🚀 Performance (ускорение Авито на всех платформах)
Рад представить вам генерального партнёра проекта Android Broadcast - AvitoTech. Это очень классные ребята с отличной культурой разработки. У меня появилась возможность работать с ними ближе в рамках сотрудничества и я этому очень рад!
Если вам интересно присоединиться к их команде, то прямо сейчас они ищут Android разработчиков в команды:
🔥 Speed (CI/CD, фреймворки для тестирования и релизы)
🚀 Performance (ускорение Авито на всех платформах)
#Security
Подменяем Runtime permissions в Android
В Android можно обмануть систему при показе системного диалога с получением разрешения, перекрыв его своим. Уязвимость появилась после Android 7.1.
Подменяем Runtime permissions в Android
В Android можно обмануть систему при показе системного диалога с получением разрешения, перекрыв его своим. Уязвимость появилась после Android 7.1.
#Security #GooglePlay
Seeing If Your App Has the Play Core Vulnerability
Найдена уязвимость в библиотеке Google Play Core, которая позволяет выполнять код удаленно. Уязвимость содержится во всех версиях библиотеки с 1.3.6 до 1.7.1. Бегите обновляться до любой версии, начиная с 1.7.2.
Чтобы проверить, использует ли ваше приложение эту библиотеку выполните в терминале команду
Возможно библиотека не подключена у вас явным образом, но может подключаться транзитивно из других библиотек
Seeing If Your App Has the Play Core Vulnerability
Найдена уязвимость в библиотеке Google Play Core, которая позволяет выполнять код удаленно. Уязвимость содержится во всех версиях библиотеки с 1.3.6 до 1.7.1. Бегите обновляться до любой версии, начиная с 1.7.2.
Чтобы проверить, использует ли ваше приложение эту библиотеку выполните в терминале команду
./gradlew <МОДУЛЬ ПРИЛОЖЕНИЯ>:dependencies | fgrep "com.google.android.play:core"
Возможно библиотека не подключена у вас явным образом, но может подключаться транзитивно из других библиотек
#Emulator
Android Emulator Apple Silicon Preview
Для всех кто прикупил новые MacBook c M1 и хочет их использовать как основную машину для разработки хорошая новость - в команде Android уже работают над версией эмулятора ARM64, которую можно будет запускать на Apple Silicon.
Пока все находится в разработке и не работает множество функций в системе, таких как WebView, звук, Vulkan и др. Для приложений где этот функционал отсутсвует или некритичен вы можете попробовать обкатать этот эмулятор
Android Emulator Apple Silicon Preview
Для всех кто прикупил новые MacBook c M1 и хочет их использовать как основную машину для разработки хорошая новость - в команде Android уже работают над версией эмулятора ARM64, которую можно будет запускать на Apple Silicon.
Пока все находится в разработке и не работает множество функций в системе, таких как WebView, звук, Vulkan и др. Для приложений где этот функционал отсутсвует или некритичен вы можете попробовать обкатать этот эмулятор
#Kotlin #IDEA
Kotlin Plugin Released With IDEA 2020.3
Разработка Kotlin плагина переехала в репозиторий IDEA и стала его частью, чтобы упростить интеграцию последних фичей платформы. Теперь мажорные релизы Kotlin плагина будут выходить вместе с IDE от JetBrains.
В последнем релизе 2020.3 добавили такие функции:
👉 Inline рефакторинг в разных языках
👉 Поддержка структурного поиска и замены для Kotlin, позволяющие искать код по шаблону
👉 Поддержка настроек форматирования кода для Kotlin плагина в .editorconfig
👉 Новые шаблоны для Jetpack Compose for Desktop и KMP
Хотите получать больше новостей о Kotlin и Kotlin Mobile Multiplatform? Подписывайтесь на Telegram канал @kotlin_broadcast
Kotlin Plugin Released With IDEA 2020.3
Разработка Kotlin плагина переехала в репозиторий IDEA и стала его частью, чтобы упростить интеграцию последних фичей платформы. Теперь мажорные релизы Kotlin плагина будут выходить вместе с IDE от JetBrains.
В последнем релизе 2020.3 добавили такие функции:
👉 Inline рефакторинг в разных языках
👉 Поддержка структурного поиска и замены для Kotlin, позволяющие искать код по шаблону
👉 Поддержка настроек форматирования кода для Kotlin плагина в .editorconfig
👉 Новые шаблоны для Jetpack Compose for Desktop и KMP
Хотите получать больше новостей о Kotlin и Kotlin Mobile Multiplatform? Подписывайтесь на Telegram канал @kotlin_broadcast
#AnroidBroadcast #Notification #Firebase
Советы по уведомлениям в Android (25 мин)
Рассказываю про уведомления в Android: почему вам стоит уделить время их интеграции, какие сложности скрывает API уведомлений в Android и что может сделать FCM. Помимо прочего представляю свою библиотеку Android Notification DSL
Ставьте лайки этому видео на YouTube, оставляйте комментарии с вашими пожеланиями по новым темам. Ну и конечно же подписывайтесь на канал Android Broadcast!
Советы по уведомлениям в Android (25 мин)
Рассказываю про уведомления в Android: почему вам стоит уделить время их интеграции, какие сложности скрывает API уведомлений в Android и что может сделать FCM. Помимо прочего представляю свою библиотеку Android Notification DSL
Ставьте лайки этому видео на YouTube, оставляйте комментарии с вашими пожеланиями по новым темам. Ну и конечно же подписывайтесь на канал Android Broadcast!
#Jetpack #AppStartup
App Startup, Part 1
Chet Haase делает введение в AppStartup, рассказывая про суть инициализации, используя под капотом ContentProvider, который автоматом создается при запуске приложения, если объявить его в манифесте.
Цель App Startup - сократить увеличенное время запуска приложения, которые появляется из-за множества таких ContentProvider в приложениях.
Подробнее об App Startup читайте здесь
App Startup, Part 1
Chet Haase делает введение в AppStartup, рассказывая про суть инициализации, используя под капотом ContentProvider, который автоматом создается при запуске приложения, если объявить его в манифесте.
Цель App Startup - сократить увеличенное время запуска приложения, которые появляется из-за множества таких ContentProvider в приложениях.
Подробнее об App Startup читайте здесь
#AndroidStudio #DeepLink
Делюсь небольшим, но полезным плагином: Deeplink Helper для Android Studio
История создания плагина DeeplinkHelperPlugin для Android Studio, задача которого упростить открытие deep link. Вместо листания истории терминала у вас есть UI из IDE.
Делюсь небольшим, но полезным плагином: Deeplink Helper для Android Studio
История создания плагина DeeplinkHelperPlugin для Android Studio, задача которого упростить открытие deep link. Вместо листания истории терминала у вас есть UI из IDE.
#Collection
All you need to know about ArrayMap & SparseArray
Android SDK содержит свои собственные коллекции, которые призваны оптимизировать использование стандартных коллекций в специфичных для Android задачах.
В статье автор рассказывает о особенностях реализации ArrayMap и SparseArray и как они позволяют оптимизировать расход оперативной памяти и скорость.
All you need to know about ArrayMap & SparseArray
Android SDK содержит свои собственные коллекции, которые призваны оптимизировать использование стандартных коллекций в специфичных для Android задачах.
В статье автор рассказывает о особенностях реализации ArrayMap и SparseArray и как они позволяют оптимизировать расход оперативной памяти и скорость.