#UI
Introducing dual-screen layouts for Android
Microsoft готовит API для их двухэкранного устройства Microsoft Surface Duo. Устройство от Microsoft - это очередная попытка уйти от стандартного формата моноблока.
Introducing dual-screen layouts for Android
Microsoft готовит API для их двухэкранного устройства Microsoft Surface Duo. Устройство от Microsoft - это очередная попытка уйти от стандартного формата моноблока.
Microsoft News
Introducing dual-screen layouts for Android
Today we are releasing a preview of our first Android dual-screen layout control for Java and Kotlin developers. The new control and associated helpers will enable you to build dynamic and responsive apps that take advantage of the Microsoft Surface Duo and…
#Design
32 отличия дизайна мобильного приложения под iOS и Android
Статья которую я не смогу обойти, так как страдаю от дизайна, когда он не адаптируется под платформу и не использует всю прелесть Material Design, а может и наоборот - использует ее слишком, даже где не нужно. Да еще и дизайнеры зачастую - это пользователи Apple стороны и не знают пользовательского опыта Android.
Статья сможет показать различия и послужить аргументами в разговоре с ними. Что разбирается:
👉 Базовые отличия Humans Interface Guideline (HIG) и Material Design (MD)
👉 Отличия в навигации
👉 Отличия в компонентах (UI)
👉 Другие отличия: магазины, кликабельные зоны, splash экраны, форматы данных, дизайн пустых состояний и прочее
32 отличия дизайна мобильного приложения под iOS и Android
Статья которую я не смогу обойти, так как страдаю от дизайна, когда он не адаптируется под платформу и не использует всю прелесть Material Design, а может и наоборот - использует ее слишком, даже где не нужно. Да еще и дизайнеры зачастую - это пользователи Apple стороны и не знают пользовательского опыта Android.
Статья сможет показать различия и послужить аргументами в разговоре с ними. Что разбирается:
👉 Базовые отличия Humans Interface Guideline (HIG) и Material Design (MD)
👉 Отличия в навигации
👉 Отличия в компонентах (UI)
👉 Другие отличия: магазины, кликабельные зоны, splash экраны, форматы данных, дизайн пустых состояний и прочее
Хабр
32 отличия дизайна мобильного приложения под iOS и Android
Железный дизайнер из Redmadrobot Design Lab Артур Абраров делится наблюдениями. Адаптировать дизайн под другую платформу — неотъемлемая часть работы дизайнера мобильных приложений. Цель этой работы —...
#RecyclerView
Merge adapters sequentially with MergeAdapter
Последняя альфа версия RecyclerView 1.2.0-alpha02 в котором появился MergeAdapter. Новый адаптер позволяет поочередно соединить в себе содержимое из нескольких адаптеров списка.
Примеры для его применения: добавление header и footer, отображение прогресса загрузки в списках с бесконечным скроллом и др.
В статье разбирается как завести новый MergeAdapter
Merge adapters sequentially with MergeAdapter
Последняя альфа версия RecyclerView 1.2.0-alpha02 в котором появился MergeAdapter. Новый адаптер позволяет поочередно соединить в себе содержимое из нескольких адаптеров списка.
Примеры для его применения: добавление header и footer, отображение прогресса загрузки в списках с бесконечным скроллом и др.
В статье разбирается как завести новый MergeAdapter
Medium
Concatenate adapters sequentially with ConcatAdapter
Use case example: displaying a list header and footer
#Опрос #Итоги
Известность команд мобильной разработки в 2020
Каждый год Егор Толстой проводит большой опрос среди мобильных разработчиков, который помогает оценить текущее состояние рынка и то, насколько вложения в технический бренд компаний влияют на их публичный образ.
И вот результаты для Android Broadcast. В прошлом году проекта даже не было в рейтингах, но в этом году смог отметиться по нескольким категориям:
🥉 Android Broadcast Podcast - 3-е место среди Android подкастов!
🏆 Android Broadcast Telegram канал - 1-е место среди новостных Android ресурсов
👨 Автор проекта, Кирилл Розов, появился в категории "За кем из экспертов в профессиональном сообществе в России вы следите?"! Это очень радует.
Спасибо всем читателям и тем кто поддержал проект. Буду радовать вас и в будущем интересным контентом!
Известность команд мобильной разработки в 2020
Каждый год Егор Толстой проводит большой опрос среди мобильных разработчиков, который помогает оценить текущее состояние рынка и то, насколько вложения в технический бренд компаний влияют на их публичный образ.
И вот результаты для Android Broadcast. В прошлом году проекта даже не было в рейтингах, но в этом году смог отметиться по нескольким категориям:
🥉 Android Broadcast Podcast - 3-е место среди Android подкастов!
🏆 Android Broadcast Telegram канал - 1-е место среди новостных Android ресурсов
👨 Автор проекта, Кирилл Розов, появился в категории "За кем из экспертов в профессиональном сообществе в России вы следите?"! Это очень радует.
Спасибо всем читателям и тем кто поддержал проект. Буду радовать вас и в будущем интересным контентом!
Medium
Известность команд мобильной разработки в 2020
Результаты большого опроса мобильщиков: в каких компаниях хотят работать, как их выбирают, какие ресурсы читают, на какие конференции…
👍1
#Network
Вышел OkHttp 4.5.0
Что нового:
👉 Включена компрессия Web socket
👉 Улучшения в работе Web Socket
👉 Исправление багов
Вышел OkHttp 4.5.0
Что нового:
👉 Включена компрессия Web socket
👉 Улучшения в работе Web Socket
👉 Исправление багов
GitHub
okhttp/CHANGELOG.md at master · square/okhttp
Square’s meticulous HTTP client for the JVM, Android, and GraalVM. - square/okhttp
#Coroutines
Coroutines & Patterns for work that shouldn’t be cancelled
Structured Concurrency в Kotlin Coroutines позволяет завершать асинхронные операции, когда их результат больше не нужен. Jetpack предоставляет стандартные
Но порой есть операции, которые должны выполняться и за рамками
В статье разбирается:
👉 Coroutines или WorkManager?
👉 Лучшие практики Coroutine
👉 Выполнение операций, которые не должны быть отменены в ходе выполнения Coroutine. CoroutineScope из вашего Application класса
👉 Тестирование Coroutine
👉 Альтернативы: GlobalScope, ProcessLifecycleOwner scope, NonCancellable
Coroutines & Patterns for work that shouldn’t be cancelled
Structured Concurrency в Kotlin Coroutines позволяет завершать асинхронные операции, когда их результат больше не нужен. Jetpack предоставляет стандартные
CoroutineScope
: viewModelScope и lifecycleScope.Но порой есть операции, которые должны выполняться и за рамками
CoroutineScope
в котором была запущена Coroutine
.В статье разбирается:
👉 Coroutines или WorkManager?
👉 Лучшие практики Coroutine
👉 Выполнение операций, которые не должны быть отменены в ходе выполнения Coroutine. CoroutineScope из вашего Application класса
👉 Тестирование Coroutine
👉 Альтернативы: GlobalScope, ProcessLifecycleOwner scope, NonCancellable
Medium
Coroutines & Patterns for work that shouldn’t be cancelled
Cancellation and Exceptions in Coroutines (Part 4)
#Podcast
Android Broadcast Podcast #11 "Развитие мобильного разработчика"
Что делать когда вы проработали много лет в мобильной разработке и думаете: "Куда вам расти дальше"? В гостях подкаста 3 опытнейших и известных разработчика из Facebook, Авито и JetBrains Kotlin Team.
Ведущий - Кирилл Розов
Гости:
👨✈️Константин Цховребов, JetBrains, разработчик в Kotlin Mobile Multiplatform
👨✈️ Даниил Попов, Авито, Инженер инфраструктуры Андроид проектов
👨✈️ Сергей Рябов, Facebook, Software Engineer в команде Native UI Frameworks, разработчик библиотеки Lytho
Спасибо Александру Марцинкевичу за помощь в подготовке выпуска
Отдельное спасибо Даниилу Попову за 🎵трек 🎵для подкаста. Хотите себе что интересное - пишите ему в личку
Android Broadcast Podcast #11 "Развитие мобильного разработчика"
Что делать когда вы проработали много лет в мобильной разработке и думаете: "Куда вам расти дальше"? В гостях подкаста 3 опытнейших и известных разработчика из Facebook, Авито и JetBrains Kotlin Team.
Ведущий - Кирилл Розов
Гости:
👨✈️Константин Цховребов, JetBrains, разработчик в Kotlin Mobile Multiplatform
👨✈️ Даниил Попов, Авито, Инженер инфраструктуры Андроид проектов
👨✈️ Сергей Рябов, Facebook, Software Engineer в команде Native UI Frameworks, разработчик библиотеки Lytho
Спасибо Александру Марцинкевичу за помощь в подготовке выпуска
Отдельное спасибо Даниилу Попову за 🎵трек 🎵для подкаста. Хотите себе что интересное - пишите ему в личку
#WorkManager
Customizing WorkManager — Fundamentals
Продолжение серии статей о WorkManager, в которой разбирается как изменить настройки работы:
👉 Когда может понадобиться конфигурировать WorkManager самостоятельно
👉 Как предоставить собственную конфигурацию
👉 WorkerFactory: что такое и как добавить поддержку нестандартных конструкторов для подклассов ListenableWorker
👉 DelegatingWorkerFactory - оборачиваем несколько WorkerFactory через стандартную фабрику, вместо конфигурирования WorkManager для использования собственной фабрики
Customizing WorkManager — Fundamentals
Продолжение серии статей о WorkManager, в которой разбирается как изменить настройки работы:
👉 Когда может понадобиться конфигурировать WorkManager самостоятельно
👉 Как предоставить собственную конфигурацию
👉 WorkerFactory: что такое и как добавить поддержку нестандартных конструкторов для подклассов ListenableWorker
👉 DelegatingWorkerFactory - оборачиваем несколько WorkerFactory через стандартную фабрику, вместо конфигурирования WorkManager для использования собственной фабрики
Medium
Customizing WorkManager — fundamentals
An article about WorkManager custom configuration. What is it, why you may need one and how to implement it.
#GooglePlay #Huawei
Массовые удаления ваших приложений с устройств
На днях вы могли заметить заметное количество удалений ваших приложений в Google Play. Это связано с тем, что Huawei поменяла имена устройств и аналитика магазина приложений, посчитала это как удаление приложения и установку на новый.
Бейте тревогу если количество установок у вас не выросло соизмеримо с количеством удалений
Массовые удаления ваших приложений с устройств
На днях вы могли заметить заметное количество удалений ваших приложений в Google Play. Это связано с тем, что Huawei поменяла имена устройств и аналитика магазина приложений, посчитала это как удаление приложения и установку на новый.
Бейте тревогу если количество установок у вас не выросло соизмеримо с количеством удалений
Twitter
Maria Neumayer
PSA: if you see a spike in uninstalls of your app on @GooglePlayDev don’t worry - Huawei changed their device names and that is reported as an uninstall/install event
#Optimization
App size reduction at Microsoft SwiftKey
История того как в Microsoft оптимизировали размер SwiftKey на Android.
В статье разбирают:
👉 Зачем оптимизировать размер APK
👉 Оптимизация кода
👉 Оптимизация ресурсов
👉 Оптимизация нативного кода
App size reduction at Microsoft SwiftKey
История того как в Microsoft оптимизировали размер SwiftKey на Android.
В статье разбирают:
👉 Зачем оптимизировать размер APK
👉 Оптимизация кода
👉 Оптимизация ресурсов
👉 Оптимизация нативного кода
Medium
App size reduction at Microsoft SwiftKey
Our journey of making our Android app smaller, from when we started analysing our app to the changes we made and the improvements we got.
Также в статье выше Microsoft рассказали о интеграции в Azure DevOps Task и Github Actions шага по анализу размеру APK.
Инструмент позволяет анализировать 2 APK и сравнить их разные метрики:
👉 размер APK (apkSize)
👉 размер после установки (installSize)
👉 размер dex файлов (dexFiles)
👉 размер файлов ресурсов (arscFile)
👉 размер нативного кода (nativeLibs)
Инструмент позволяет анализировать 2 APK и сравнить их разные метрики:
👉 размер APK (apkSize)
👉 размер после установки (installSize)
👉 размер dex файлов (dexFiles)
👉 размер файлов ресурсов (arscFile)
👉 размер нативного кода (nativeLibs)
GitHub
GitHub - microsoft/android-app-size-diff: Android app size measuring in your CI
Android app size measuring in your CI. Contribute to microsoft/android-app-size-diff development by creating an account on GitHub.
#Sample #Arhitecture
Marvel Heroes - пример приложения на основе MVVM
Все кто любит супергероев и примеры приложение с использованием современных архитектур, тогда вам стоит посмотреть на репозиторий.
Тех стек приложения:
👉 min SDK = 21
👉 Kotlin based + Coroutines for asynchronous.
👉 Architecture Components: LiveData, Lifecycle, ViewModel, Room.
👉 MVVM Architecture (View - DataBinding - ViewModel - Model)
👉 Koin
👉 Retrofit2 & Gson
👉 OkHttp3
👉 Glide
👉 TransformationLayout
👉 WhatIf
👉 DiscreteScrollView
👉 Timber
👉 Material Components
Marvel Heroes - пример приложения на основе MVVM
Все кто любит супергероев и примеры приложение с использованием современных архитектур, тогда вам стоит посмотреть на репозиторий.
Тех стек приложения:
👉 min SDK = 21
👉 Kotlin based + Coroutines for asynchronous.
👉 Architecture Components: LiveData, Lifecycle, ViewModel, Room.
👉 MVVM Architecture (View - DataBinding - ViewModel - Model)
👉 Koin
👉 Retrofit2 & Gson
👉 OkHttp3
👉 Glide
👉 TransformationLayout
👉 WhatIf
👉 DiscreteScrollView
👉 Timber
👉 Material Components
Какой основной формат для обмена данными вы используете в своем последнем приложении?
Anonymous Poll
83%
REST
3%
GraphQL
0%
SOAP
4%
Socket
3%
Другой
3%
Нет работы с сервером
5%
Не участвую в опросе
Какой формат для сериализации данных для коммуникации с сервером вы используете?
Anonymous Poll
89%
JSON (GraphQL сюда)
6%
Protobuf
5%
XML
2%
Другой бинарный
1%
Другой
6%
Не участвую в опросе
#AndroidStudio #SQLite
Android Studio 4.1: Database Inspector
Не успела релизнуться Android Studio 4.0, но в новых канарейках Android Studio 4.1 нас радуют крутым функционалом. Теперь посмотреть данные из БД SQLite, модифицировать ее и делать запросы.
Все этого интегрировано с Room. Если AS будет находить аннотации, то позволит сразу выполнять запросы 🔥
Android Studio 4.1: Database Inspector
Не успела релизнуться Android Studio 4.0, но в новых канарейках Android Studio 4.1 нас радуют крутым функционалом. Теперь посмотреть данные из БД SQLite, модифицировать ее и делать запросы.
Все этого интегрировано с Room. Если AS будет находить аннотации, то позволит сразу выполнять запросы 🔥
#AndroidOS
A cautionary tale on Android: do not call System.exit()
Со времен Java многие разработчики привыкли к тому, что System.exit() остановит выполнение программы, но не в случае Android. Хотите завершить весь stack Activity - вызывайте Activity.finishAffinity().
Это не остановит все компоненты (Service и прочее), но поможет закрыть весь текущий back stack Activity.
A cautionary tale on Android: do not call System.exit()
Со времен Java многие разработчики привыкли к тому, что System.exit() остановит выполнение программы, но не в случае Android. Хотите завершить весь stack Activity - вызывайте Activity.finishAffinity().
Это не остановит все компоненты (Service и прочее), но поможет закрыть весь текущий back stack Activity.
Medium
A cautionary tale on Android: do not call System.exit()
Once upon a time… there was an issue that was hidden in plain sight! It lived freely for years without no one noticing it. Until one day…
#Online #Meetup
Kotlin Quiz by Mobile People
Сообщество Mobile People проводит онлайн митап по Kotlin в формате Quiz: задается вопрос, вы на него отвечаете, и идет объяснение ответа. Помимо всего вы можете выиграть призы!
Когда: 15 апреля, среда, 18.30 (Минск)
Где: YouTube Stream
Kotlin Quiz by Mobile People
Сообщество Mobile People проводит онлайн митап по Kotlin в формате Quiz: задается вопрос, вы на него отвечаете, и идет объяснение ответа. Помимо всего вы можете выиграть призы!
Когда: 15 апреля, среда, 18.30 (Минск)
Где: YouTube Stream
#Arhitecture #Navigation
Context free Android navigation
Организация навигации в Android приложении имеет особенности - нам необходимо Activity, Contex либо Fragment (добавленный в Activity). Держать ссылки на эти компоненты из ViewModel не стоит. Как тогда организовать правильно навигацию не перекидывая события о переходе в подписчиков
В статье рассматривается подход в виде абстракции Navigator, которую вы можете использовать в
Context free Android navigation
Организация навигации в Android приложении имеет особенности - нам необходимо Activity, Contex либо Fragment (добавленный в Activity). Держать ссылки на эти компоненты из ViewModel не стоит. Как тогда организовать правильно навигацию не перекидывая события о переходе в подписчиков
LiveData
из ViewModel
?В статье рассматривается подход в виде абстракции Navigator, которую вы можете использовать в
ViewModel
.Medium
Context free Android navigation
You may be familiar with this situation: You want a ViewModel without Android code, but some dependencies need an Activity to navigate. Or…
#Architecture
Android: Error handling in Clean Architecture
Взгляд на обработку ошибок и передачу их между слоями в Clean Architecture. Учтите, что взгляд который описывается в статье - это не канон. Вам он может не понравиться, вы можете сделать по другому.
Для себя я предпочитаю возвращать всегда класс-обертку
Android: Error handling in Clean Architecture
Взгляд на обработку ошибок и передачу их между слоями в Clean Architecture. Учтите, что взгляд который описывается в статье - это не канон. Вам он может не понравиться, вы можете сделать по другому.
Для себя я предпочитаю возвращать всегда класс-обертку
Result
, которая может быть либо ошибкой, либо результатом успешно выполненной операции. Вот здесь примерMedium
Android: Error handling in Clean Architecture
When you’re building an app using Clean Architecture patterns, how do you propagate errors between the layers?