#Fragment
Android MultiStacks
Популярный дизайн паттерн в Android приложениях Bottom Navigation имеет один недостаток в реализации - в библиотеке AndroidX Fragment нет поддержки множества стеков для каждой вкладки ☹️. Библиотека Android MultiStacks предлагает решение этой проблемы.
Android MultiStacks
Популярный дизайн паттерн в Android приложениях Bottom Navigation имеет один недостаток в реализации - в библиотеке AndroidX Fragment нет поддержки множества стеков для каждой вкладки ☹️. Библиотека Android MultiStacks предлагает решение этой проблемы.
GitHub
GitHub - DimaKron/Android-MultiStacks: Easy multiple stack emulation for Android
Easy multiple stack emulation for Android. Contribute to DimaKron/Android-MultiStacks development by creating an account on GitHub.
#Podcast
Android Broadcast #5: "Как стать крутым разработчиком" с Денисом Неклюдовым
Каково это быть крутым и популярным разработчиком? Когда ты выступаешь на митапах и конференциях, твой голос узнают в подкастах и читают твои статьи. Однозначно интересно! Это дает как профессиональное развитие, так и карьерное продвижение. Как стать таким разработчиком выяснил с Денисом Неклюдовым. Завсегдатый Dev Fest-ов и тайный поклонник Android Academy.
Денис Неклюдов - Android разработчик в Lyft, Google Developer Expert в Android, IoT и Google Pay. Ведущий подкаста "Android Dev Podcast". Чаcтый спикер на конференция Mobius и Apps Conf.
Полезные ссылки:
👉 Android Dev Podcast RU
👉 Android Dev Podcast EN
👉 Android Dev Podcast Telegram
👉 Доклад "Google Ecosystem for Apps. Total Integrations"
👉 Доклад "Переезд: подготовка, выбор, освоение территории"
👉 Доклад "Переезд Vol2. Детальный разбор направлений"
👉 Интервью с Денисом "Об удаленке в Тайланде, переезде в Сингапур, экстраординарной визе в США!"
👉 Отзывы на "90 Seconds"
👉 Анонс курсов по трудоустройству от Дениса и Кати из Подлодки Подкаста
👉 Программа "Google Developer Experts"
👉 Денис на сайте GDE
Контакты:
👉 Кирилл Розов - [email protected], t.iss.one/krlrozov
👉 Денис Неклюдов - t.iss.one/nekdenis
Отдельное спасибо Александру Марцинкевичу за помощь в монтаже выпуска
Android Broadcast #5: "Как стать крутым разработчиком" с Денисом Неклюдовым
Каково это быть крутым и популярным разработчиком? Когда ты выступаешь на митапах и конференциях, твой голос узнают в подкастах и читают твои статьи. Однозначно интересно! Это дает как профессиональное развитие, так и карьерное продвижение. Как стать таким разработчиком выяснил с Денисом Неклюдовым. Завсегдатый Dev Fest-ов и тайный поклонник Android Academy.
Денис Неклюдов - Android разработчик в Lyft, Google Developer Expert в Android, IoT и Google Pay. Ведущий подкаста "Android Dev Podcast". Чаcтый спикер на конференция Mobius и Apps Conf.
Полезные ссылки:
👉 Android Dev Podcast RU
👉 Android Dev Podcast EN
👉 Android Dev Podcast Telegram
👉 Доклад "Google Ecosystem for Apps. Total Integrations"
👉 Доклад "Переезд: подготовка, выбор, освоение территории"
👉 Доклад "Переезд Vol2. Детальный разбор направлений"
👉 Интервью с Денисом "Об удаленке в Тайланде, переезде в Сингапур, экстраординарной визе в США!"
👉 Отзывы на "90 Seconds"
👉 Анонс курсов по трудоустройству от Дениса и Кати из Подлодки Подкаста
👉 Программа "Google Developer Experts"
👉 Денис на сайте GDE
Контакты:
👉 Кирилл Розов - [email protected], t.iss.one/krlrozov
👉 Денис Неклюдов - t.iss.one/nekdenis
Отдельное спасибо Александру Марцинкевичу за помощь в монтаже выпуска
YouTube
"Как стать крутым разработчиком" c Денисом Неклюдовым
Каково это быть крутым и популярным разработчиком? Когда ты выступаешь на митапах и конференциях, твой голос узнают в подкастах и читают твои статьи. Однозначно интересно! Это дает как профессиональное развитие, так и карьерное продвижение. Как стать таким…
#Android10 #DarkTheme
Dark Mode
Темная тема - одна из самых долгожданных функций в Android 10. Её наличие позволяет сократить расход батареи и уменьшить напряжение на глаза в темных условиях. В видео разбирают как можно адаптировать ваше приложение под темную тему.
Dark Mode
Темная тема - одна из самых долгожданных функций в Android 10. Её наличие позволяет сократить расход батареи и уменьшить напряжение на глаза в темных условиях. В видео разбирают как можно адаптировать ваше приложение под темную тему.
YouTube
Dark Mode
Dark theme is a new alternative to Android's default light theme, which is a system wide setting that applies to all apps that support it. By supporting Dark theme, you can reduce power usage by a significant amount and improve usability for users who have…
"Now in Android" теперь на YouTube
"Now in Android" с последними новостями Android разработки из Google от Chet Haase теперь стало доступно в видео формате
"Now in Android" с последними новостями Android разработки из Google от Chet Haase теперь стало доступно в видео формате
YouTube
Now in Android: 01 - Room, KTX extensions, AndroidX, conference videos, ADB podcast & more!
Welcome to Now in Android, your ongoing guide to what’s new and notable in the world of Android development. In this video, Chet Haase goes over the new Room and KTX docs, AndroidX releases, a new Room article, a new codelab, videos from recent conferences…
#AndroidKtx #Kotlin #Codelab
Building a Kotlin extensions library
Используете ли вы Android KTX библиотеки? Это расширения стандартного API и библиотек из Jetpack чтобы удобно писать под Android на языке Kotlin.
Google выпустила новую Codelab с руководством как создать свою собственную Ktx библиотеку и адаптировать ее API. Рассматриваются:
👉 Extension Functions
👉 Coroutines
👉 Flow
Также рекомендую посмотреть доклад "KotlinConf 2019: Android Jetpack ❤️ Kotlin: On the road to more wholesome APIs" от Wojtek Kaliciński
Building a Kotlin extensions library
Используете ли вы Android KTX библиотеки? Это расширения стандартного API и библиотек из Jetpack чтобы удобно писать под Android на языке Kotlin.
Google выпустила новую Codelab с руководством как создать свою собственную Ktx библиотеку и адаптировать ее API. Рассматриваются:
👉 Extension Functions
👉 Coroutines
👉 Flow
Также рекомендую посмотреть доклад "KotlinConf 2019: Android Jetpack ❤️ Kotlin: On the road to more wholesome APIs" от Wojtek Kaliciński
#Jetpack #Fragment
Jetpack Updates 22.01.2020
Новая пачка обновлений библиотек из Jetpack:
👉 Activity 1.1.0
👉 Fragment 1.2.0
👉 Lifecycle 2.2.0
👉 ViewModel-SavedState 1.0.0
👉 Navigation 2.2.0
👉 Sqlite 2.1.0
👉 Transition 1.3.0
👉 WorkManager 2.3.0
Также еще вышли новые альфы CameraX, Ads, Heif Writer и TextClassifier
Давайте подробнее пройдется по каждой из библиотек
Jetpack Updates 22.01.2020
Новая пачка обновлений библиотек из Jetpack:
👉 Activity 1.1.0
👉 Fragment 1.2.0
👉 Lifecycle 2.2.0
👉 ViewModel-SavedState 1.0.0
👉 Navigation 2.2.0
👉 Sqlite 2.1.0
👉 Transition 1.3.0
👉 WorkManager 2.3.0
Также еще вышли новые альфы CameraX, Ads, Heif Writer и TextClassifier
Давайте подробнее пройдется по каждой из библиотек
Android Developers
Recent Release Notes | Android Developers
#Jetpack #ViewModel #SavedState
ViewModel-SavedState 1.0.0
В
ViewModel-SavedState 1.0.0
В
ViewModel
решена задача с сохранением данных при изменение конфигурации. Ранее состояние сохранялась пока жив процесс, но вот при его уничтожение системой способа сохранить данные "из коробки" не было. Теперь есть - SavedStateHandle#Jetpack #Activity #ViewModel
Activity 1.1.0
Важным изменением в новой версии Activity стала изменение используемой по умолчанию фабрики для создания
Теперь вы можете получить SavedStateHandle в конструкторе ViewModel, например
Activity 1.1.0
Важным изменением в новой версии Activity стала изменение используемой по умолчанию фабрики для создания
ViewModel
. Раньше использовалась AndroidViewModelFactory на смену которой пришла SavedStateViewModelFactory. Теперь вы можете получить SavedStateHandle в конструкторе ViewModel, например
class MyActivity : Activity() {
val vm: MyViewModel by viewModels()
}
class MyViewModel(
savedState: SavedStateHandle
) : ViewModel()
#Fragment #ViewModel #Jetpack
Fragment 1.2.0
👉 FragmentContainerView - новая
👉 Изменение используемой по умолчанию фабрики для создания
👉
👉 Новые проверки Android Lint: теперь проверяется правильность использования
👉
👉
Fragment 1.2.0
👉 FragmentContainerView - новая
ViewGroup
, предназначенная специально для размещения в ней Fragment
. Она исправляет проблемы с анимациями при выполнение транзакций. Забудь о FrameLayout
или <fragment>
, теперь только FragmentContainerView
.👉 Изменение используемой по умолчанию фабрики для создания
ViewModel
по аналогии с Activity 1.1.0👉
Fragment.onDestroyView()
теперь вызывается только после окончания анимации/transition👉 Новые проверки Android Lint: теперь проверяется правильность использования
getViewLifecycleOwner()
👉
Fragment.getFragmentManager()
переименовано в Fragment.getParentFragmentManager()
👉
FragmentManager
теперь поддерживает операции (add/replace и др.) с Fragment
по их классу, в дополнение к заранее созданному объекту. Это улучшает поддержку возможности по интеграции DI в конструктор Fragment
.#ArchitectureComponent #ViewModel #Lifecycle #Coroutines
Lifecycle 2.2.0
Много новых интеграций с Kotlin Coroutines:
👉 Конвертация
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через
👉 LifecycleCoroutineScope - специальный
👉 suspend функции, связанные с
Но помимо этого
👉 Теперь вместо
👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью
Lifecycle 2.2.0
Много новых интеграций с Kotlin Coroutines:
👉 Конвертация
Flow
<-> LiveData
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через
LiveData
👉 LifecycleCoroutineScope - специальный
CoroutineScope
, связанный с Lifecycle
. Он позволяет запускать Coroutine, когда Lifecycle
достигнет определенного состояния с помощью launchWhenCreated, launchWhenResumed и launchWhenStarted👉 suspend функции, связанные с
LifecycleOwner
и Lifecycle
, которые позволяют дождаться заданного состояния Lifecycle: whenCreated, whenStarted, whenResumed, whenStateAtLeast (только для Lifecycle
)Но помимо этого
👉 Теперь вместо
ViewModelProviders.of()
надо создавать ViewModelProvider
через конструктор👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью
@OnLifecycleEvent
используйте DefautLifecycleObserver.#Jetpack #ArhitectureComponents #WorkManager
WorkManager 2.3.0
Появилась возможность задавать системе, что выполняемая операция важна, и что процесс должен оставаться живым как можно дольше во время выполнения. Работает механизм поверх Foreground Service. Используйте setForegroundAsync
Также появилась возможность отображать прогресс выполнения задачи с помощью setProgressAsync
WorkManager 2.3.0
Появилась возможность задавать системе, что выполняемая операция важна, и что процесс должен оставаться живым как можно дольше во время выполнения. Работает механизм поверх Foreground Service. Используйте setForegroundAsync
Также появилась возможность отображать прогресс выполнения задачи с помощью setProgressAsync
#Jetpack #Navigation
Navigation 2.2.0
👉 Возможность получения элемента из back stack по id элемента из графа. Используйте getBackStackEntry
👉 Параметры в Deep Link теперь могут быть в любом порядке
👉 Появилась поддержка опциональных параметров в Deep Link
👉 Улучшение работы анимаций
Navigation 2.2.0
👉 Возможность получения элемента из back stack по id элемента из графа. Используйте getBackStackEntry
👉 Параметры в Deep Link теперь могут быть в любом порядке
👉 Появилась поддержка опциональных параметров в Deep Link
👉 Улучшение работы анимаций
Стоит ли делать обзоры обновлений Jetpack в формате t.iss.one/android_broadcast/1397 ?
Final Results
63%
Да, несколько постов тредом
26%
Да, все в одном посте
7%
Нет, выноси на отдельный ресурс и пости ссылку
3%
Не стоит делать вообще такого
2%
Другое
#Gradle #Performance #Modularization
O(1) Android build time at Tiki
Разработчики подходят с разных сторон в попытке оптимизировать Gradle сборку и сделать работу быстрее. В Tiki сделал довольно интересно решение - подключение только одного feature модуля с которым сейчас работает разработчик, что позволил сократить время разработки.
Как это реализовать и каким образом должны подключаться модули вы можете найти в статье.
O(1) Android build time at Tiki
Разработчики подходят с разных сторон в попытке оптимизировать Gradle сборку и сделать работу быстрее. В Tiki сделал довольно интересно решение - подключение только одного feature модуля с которым сейчас работает разработчик, что позволил сократить время разработки.
Как это реализовать и каким образом должны подключаться модули вы можете найти в статье.
Tiki Engineering
O(1) Android build time at Tiki - Tiki Engineering
The problem Build time has always been a big issue for Android developers. In order […]
#Internship #Moscow
Весенняя стажировка (2020) для мобильных разработчиков в Redmadrobot
Компания Redmadrobot запуска стажировку для Android и iOS разработчиков. Стажировка призвана не научить вас написать первое приложение под ваш смартфон, а погрузиться глубже на основе базиса знаний.
Что обещают:
👉 Самые актуальные навыки для разработчика в 2020 году
👉 Материалы из проектов Redmadrobot
👉 Две рабочие группы: iOS и Android
👉 Очные вечерние занятия на Swift/Kotlin три раза в неделю с 18:30 до 20:30
👉 Интересные и реально сложные домашние задания (мы предупредили!)
👉 Знакомство с проектными бизнес-процессами и внутренней кухней компании
До конца дойдут только самые упорные и прокаченные на новый уровень разработчики, а лучшие получат еще и предложение от Redmadrobot. Самое главное - это возможность получить знания от профессионалов своего дела.
Весенняя стажировка (2020) для мобильных разработчиков в Redmadrobot
Компания Redmadrobot запуска стажировку для Android и iOS разработчиков. Стажировка призвана не научить вас написать первое приложение под ваш смартфон, а погрузиться глубже на основе базиса знаний.
Что обещают:
👉 Самые актуальные навыки для разработчика в 2020 году
👉 Материалы из проектов Redmadrobot
👉 Две рабочие группы: iOS и Android
👉 Очные вечерние занятия на Swift/Kotlin три раза в неделю с 18:30 до 20:30
👉 Интересные и реально сложные домашние задания (мы предупредили!)
👉 Знакомство с проектными бизнес-процессами и внутренней кухней компании
До конца дойдут только самые упорные и прокаченные на новый уровень разработчики, а лучшие получат еще и предложение от Redmadrobot. Самое главное - это возможность получить знания от профессионалов своего дела.
Хабр
Весенняя стажировка для мобильных разработчиков в Redmadrobot
Привет, Хабр, мы запускаем шестую, на этот раз весеннюю, стажировку для мобильных разработчиков в московском офисе Redmadrobot. Всех, кто пройдёт строгий желез...
#CustomView
Documenting your XML attributes – Custom View
Многим приходилось сталкиваться с View не из Android SDK или AndroidX, а также писать их самостоятельно. И самое обидное порой, что разработчик может добавить множество XML атрибутов для кастомизации View, но не задокументировать их. Зачастую в таком случае единственным источником правды становится репозиторий проекта на GitHub, а то и вовсе исходник.
В статье разбирается как задокументировать атрибуты View и как это улучшит разработку.
Documenting your XML attributes – Custom View
Многим приходилось сталкиваться с View не из Android SDK или AndroidX, а также писать их самостоятельно. И самое обидное порой, что разработчик может добавить множество XML атрибутов для кастомизации View, но не задокументировать их. Зачастую в таком случае единственным источником правды становится репозиторий проекта на GitHub, а то и вовсе исходник.
В статье разбирается как задокументировать атрибуты View и как это улучшит разработку.
Giorgosneokleous
Documenting your XML attributes – Custom View
Learn how to document your XML attributes for your Custom Views.
#Coroutines #Flow #RxJava
From RxJava 2 to Kotlin Flow: Threading
В статье автор проводит сравнение работы по управлению Java потоками выполнения в
From RxJava 2 to Kotlin Flow: Threading
Kotlin Flow
- это реализация реактивных стримов на основе Coroutine, и естественно Android разработчики будут сравнивать ее к тому, чему уже привыкли - RxJava 2
.В статье автор проводит сравнение работы по управлению Java потоками выполнения в
RxJava Obserable
и Coroutine Flow
, а также миграции с первого подхода на последний.Medium
From RxJava 2 to Kotlin Flow: Threading
Comparing threading in RxJava 2 and Kotlin Flow
#WebView #DarkTheme
Enabling dark theme in Android WebViews
Темная тема - крутая фича, но проблемным местом ее интеграции оставалось WebView, где контент отрисовывается независимо от приложения с чем адаптация этого виджета для поддержки темной темы становилась сложнее.
Следующая версия библиотеки androidx.webkit 1.2.0 (пока достигла статуса alpha01) добавляет возможности по работе с темной темой
Enabling dark theme in Android WebViews
Темная тема - крутая фича, но проблемным местом ее интеграции оставалось WebView, где контент отрисовывается независимо от приложения с чем адаптация этого виджета для поддержки темной темы становилась сложнее.
Следующая версия библиотеки androidx.webkit 1.2.0 (пока достигла статуса alpha01) добавляет возможности по работе с темной темой
Joe Birch
Enabling dark theme in Android WebViews
So your apps just implemented a shiny new dark theme and it's looking 👌 And if you haven't yet, maybe it's in the pipeline for you to work on sometime in the future! There are lots of benefits to having a dark theme in your application, and having it consistent…
#DevFest
GDG DevFest On Demand
Google собрала видеозаписи всех докладов сезона DevFest 2019 года со всех уголков мира и по всем темам в одном месте
GDG DevFest On Demand
Google собрала видеозаписи всех докладов сезона DevFest 2019 года со всех уголков мира и по всем темам в одном месте
#UI #ServerDrivenUi
Dynamic screens using server-driven UI in Android
Не любой контент получится отобразить простым путём маппинга модели на UI. Порой описание элементов могут иметь множество полей разного типа и меняться в зависимости от типа элемента. Как же решать эту задачу?
Построить одну универсальную View и скрывать/показывать поля? Может сработать, но решение не гибкое и код станет кучей
В статье рассматривается пример реализации описания формата для SDUI и различные фреймворки, которые позволяют отображать его: Litho от Facebook, Epoxy от Airbnb и другие менее известные
Dynamic screens using server-driven UI in Android
Не любой контент получится отобразить простым путём маппинга модели на UI. Порой описание элементов могут иметь множество полей разного типа и меняться в зависимости от типа элемента. Как же решать эту задачу?
Построить одну универсальную View и скрывать/показывать поля? Может сработать, но решение не гибкое и код станет кучей
if...else
. На помощь может прийти решение Server Driven UI (SDUI), когда сервер управляет тем, что показать и как. Нечто подобное HTML, но SDUI - нативное и более ограничено в возможностях.В статье рассматривается пример реализации описания формата для SDUI и различные фреймворки, которые позволяют отображать его: Litho от Facebook, Epoxy от Airbnb и другие менее известные
Medium
Dynamic screens using server-driven UI in Android
Understanding the concept of server-driven UI for native mobile development