#BestPractices #Media
The Decalogue of a Pro Media App от Marcin Adamczewski
Для всех тех, кто пишет приложения, связанные с медиа: аудио и видео плееры и пр., и тем кто этим не занимается рекомендую ознакомиться с лучшими практиками при разработке такого рода приложений. Основные из них:
1️⃣ Необходимо поддерживать AudioFocus
2️⃣ Обрабатывайте Broadcast AudioManager.ACTION_AUDIO_BECOMING_NOISY
3️⃣ Android Media Session содержит множество информации которую стоит обрабатывать
4️⃣ Показывайте уведомление о Media. Для этого лучше использовать Notification.MediaStyle, чтобы уведомление выглядело в нативном стиле системы.
5️⃣ Media также показывается и на экране блокировки, поэтому проверяйте ее отображение: фоновую полноэкранную картинку, доступные действия для управления и пр.
6️⃣ Проигрывание медиа часто должно продолжаться и в фоне, поэтому вам стоит использовать Foreground Service для вашего плеера.
7️⃣ Чтобы ваш телефон не выключил процессор когда отключится экран важно использовать WakeLock. Для плееров, воспроизводящих онлайн контент, очень важно не дать отключиться WiFi. Сделать это можно с помощью WifiManager.WifiLock.
8️⃣ Видео всегда должно быть на экране, поэтому не даем ему погаснуть с помощью атрибута android:keepScreenOn=”true” в layout.
9️⃣ AudioTrack имеет ограничения в Android, и не стоит забывать о них!
🔟 Добавляйте поддержку Chromecast для аудио/видео сервисов, это позволит вашим пользователям наслаждаться конвентом на различных устройствах. Смотрите Google Cast SDK
The Decalogue of a Pro Media App от Marcin Adamczewski
Для всех тех, кто пишет приложения, связанные с медиа: аудио и видео плееры и пр., и тем кто этим не занимается рекомендую ознакомиться с лучшими практиками при разработке такого рода приложений. Основные из них:
1️⃣ Необходимо поддерживать AudioFocus
2️⃣ Обрабатывайте Broadcast AudioManager.ACTION_AUDIO_BECOMING_NOISY
3️⃣ Android Media Session содержит множество информации которую стоит обрабатывать
4️⃣ Показывайте уведомление о Media. Для этого лучше использовать Notification.MediaStyle, чтобы уведомление выглядело в нативном стиле системы.
5️⃣ Media также показывается и на экране блокировки, поэтому проверяйте ее отображение: фоновую полноэкранную картинку, доступные действия для управления и пр.
6️⃣ Проигрывание медиа часто должно продолжаться и в фоне, поэтому вам стоит использовать Foreground Service для вашего плеера.
7️⃣ Чтобы ваш телефон не выключил процессор когда отключится экран важно использовать WakeLock. Для плееров, воспроизводящих онлайн контент, очень важно не дать отключиться WiFi. Сделать это можно с помощью WifiManager.WifiLock.
8️⃣ Видео всегда должно быть на экране, поэтому не даем ему погаснуть с помощью атрибута android:keepScreenOn=”true” в layout.
9️⃣ AudioTrack имеет ограничения в Android, и не стоит забывать о них!
🔟 Добавляйте поддержку Chromecast для аудио/видео сервисов, это позволит вашим пользователям наслаждаться конвентом на различных устройствах. Смотрите Google Cast SDK
Medium
The Decalogue of a Pro Media App
In this short article, I’d like to reveal the 10 ancient commandments that will help you create a pro media application. I’ll present…
#Service #Background
Pitfalls of a foreground Service lifecycle от Maciej Witowski
Android 8.0 ввел новые правила для приложений - по максимум показывать пользователю активность в фоне и управлению по ее запуску отдавать системе (JobScheduler). Также ужесточением политики было необходимость в этом году всем приложением поддерживать minSdk = Android 8.0.
Одним из больших изменений, которые пришлось делать разработчикам при адаптации своих приложений - уход от обычных Service в сторону Foreground Service либо JobScheduler.
Основные правила при работе с Foreground Service:
1️⃣ Не вызывайте Service.startForeground() слишком рано
2️⃣ Вызывайте Service.stopSelf() после startForeground()
3️⃣ Останавливайте Service только из него самого
Нарушение правил карается падением приложения по принципам работы на Android 8.0+ 😢
Соблюдение этих правил сводиться к тому, что запуск Context.startForegroundService() всегда должен сводиться в обязательному наличию вызова Service.startForeground().
Pitfalls of a foreground Service lifecycle от Maciej Witowski
Android 8.0 ввел новые правила для приложений - по максимум показывать пользователю активность в фоне и управлению по ее запуску отдавать системе (JobScheduler). Также ужесточением политики было необходимость в этом году всем приложением поддерживать minSdk = Android 8.0.
Одним из больших изменений, которые пришлось делать разработчикам при адаптации своих приложений - уход от обычных Service в сторону Foreground Service либо JobScheduler.
Основные правила при работе с Foreground Service:
1️⃣ Не вызывайте Service.startForeground() слишком рано
2️⃣ Вызывайте Service.stopSelf() после startForeground()
3️⃣ Останавливайте Service только из него самого
Нарушение правил карается падением приложения по принципам работы на Android 8.0+ 😢
Соблюдение этих правил сводиться к тому, что запуск Context.startForegroundService() всегда должен сводиться в обязательному наличию вызова Service.startForeground().
Medium
Pitfalls of a foreground Service lifecycle
As part of Google Play’s target API level requirement existing apps need to target at least Android 8.0. One of the migration steps is…
#Flutter
Flutter for Android developers
Хорошая выборка информации по тому как преходить с Android разработки на Flutter. В репозитории вы найдете описание аналогов основных концепций из мира Android во Flutter, также прилагаются популярные паттерны: Dependency Injection, Rx, сетевые запросы, система сборки и пр.
Flutter for Android developers
Хорошая выборка информации по тому как преходить с Android разработки на Flutter. В репозитории вы найдете описание аналогов основных концепций из мира Android во Flutter, также прилагаются популярные паттерны: Dependency Injection, Rx, сетевые запросы, система сборки и пр.
По традиции все подводят итоги в последнем посте года, но мой канал совсем ещё маленький и только начинает свой рост. Одно я знаю наверняка - я хочу выразить всем вам спасибо за поддержку в развитие этого канала. Ваш интерес и положительные отзывы стимулируют делать больше и лучше.
В следующем году я хочу реализовать множество планов: осваивать новые форматы, улучшать интерактивность и создавать собственный контент.
Вам же хочу пожелать в следующем году быстрого профессионального роста, легкой модуляризации ваших проектов, интересных приложений
В следующем году я хочу реализовать множество планов: осваивать новые форматы, улучшать интерактивность и создавать собственный контент.
Вам же хочу пожелать в следующем году быстрого профессионального роста, легкой модуляризации ваших проектов, интересных приложений
#Gradle
Gradle 5.1 Release Notes
Вышла новая версия Gradle 5.1. В этом обновление сделано следующее:
👉 Задание репозитория для зависимостей. Теперь с помощью регулярного выражения можно задать какие зависимости можно брать из репозитория. Подробнее смотреть здесь.
👉 Configuration avoidance для Task-ов теперь стабильно. Теперь все гайды будут основываться на этом API. Подробнее читайте здесь.
👉 Gradle Kotlin DSL 1.1. Обновления в апдейтe DSL.
👉 Авторы Gradle плагинов обратите внимание на улучшения в API.
👉 Gradle Tooling API, которое используется Android Studio для интеграции с Gradle, теперь лучше сможет отображать прогресс выполнения задач. Ждем поддержки этого в Android Studio 3.4 😀
👉 Прочие мелкие улучшения
👉 Исправлено 30 багов
Gradle 5.1 Release Notes
Вышла новая версия Gradle 5.1. В этом обновление сделано следующее:
👉 Задание репозитория для зависимостей. Теперь с помощью регулярного выражения можно задать какие зависимости можно брать из репозитория. Подробнее смотреть здесь.
👉 Configuration avoidance для Task-ов теперь стабильно. Теперь все гайды будут основываться на этом API. Подробнее читайте здесь.
👉 Gradle Kotlin DSL 1.1. Обновления в апдейтe DSL.
👉 Авторы Gradle плагинов обратите внимание на улучшения в API.
👉 Gradle Tooling API, которое используется Android Studio для интеграции с Gradle, теперь лучше сможет отображать прогресс выполнения задач. Ждем поддержки этого в Android Studio 3.4 😀
👉 Прочие мелкие улучшения
👉 Исправлено 30 багов
GitHub
Release 1.1.0 · gradle/kotlin-dsl-samples
Gradle Kotlin DSL 1.1.0 Release Notes
Gradle Kotlin DSL 1.1.0 brings Kotlin 1.3.11, support for Kotlin lambdas in the Gradle APIs, multiple fixes and enhancements for a better behavior in IntelliJ ...
Gradle Kotlin DSL 1.1.0 brings Kotlin 1.3.11, support for Kotlin lambdas in the Gradle APIs, multiple fixes and enhancements for a better behavior in IntelliJ ...
#UI #UX
10 Android UI/UX Tips & Tricks от Gaurav
Советы по UI/UX для вашего приложения:
1️⃣ Не забывайте о эффект при нажатии на элементы UI Используйте ?android:attr:selectableItemBackground для получения Drawable из темы для фона кнопки, которая корректно показывает нажатие.
2️⃣ Используйте стандартные компоненты View и стилизацию их из темы
Этот позволяет всем вашим виджетам выглядеть консистентно платформе. Для кастомизации цветов используйте tint.
3️⃣ Тень под компонентами
4️⃣ Используйте tools:parentTag в <merge>
Это позволяет LayoutEditor понимать как отображать ваш UI в предпросмотре.
5️⃣ Отложенные парсинг layout XML с помощью ViewStub
Если часть вашего UI показывается опционально, то не стоит ее парсить сразу и делать, visibility="gone". Используйте ViewStub. Подробнее модно почитать здесь.
6️⃣ Старайтесь не использовать фиксированные разрешения
Фиксированные разрешения должны использоваться только в редких случаях когда вы знаете что размер должен быть строго такой и не может быть гибким. Например, ImageView с аватаром пользователя имеет размер 48x48dp. Просите дизайнера делать дизайн под большие и маленькие устройства, либо комментировать как должны адаптироваться элементы.
7️⃣ Размер текста: dp или sp?
Извечная дилемма. Я выбираю sp так как это делает приложение более удобным, потому что позволяет менять размер текста пользователем и приятно работать.
8️⃣ Используйте анимации при переходах
Наличие анимации позволяет пользователю понимать какой происходит переход и упрощает понимание работы приложения. Современный Android имеет множество средств и упрощений для работы с анимацией. Ждем Navigation и CoordinatorLayout, чтобы упростить это еще больше!
Также рекомендую освежать в памяти и почитывать гайды по Material Design. В них можно найти много полезного и вдохновится идеями для вашего приложения.
10 Android UI/UX Tips & Tricks от Gaurav
Советы по UI/UX для вашего приложения:
1️⃣ Не забывайте о эффект при нажатии на элементы UI Используйте ?android:attr:selectableItemBackground для получения Drawable из темы для фона кнопки, которая корректно показывает нажатие.
2️⃣ Используйте стандартные компоненты View и стилизацию их из темы
Этот позволяет всем вашим виджетам выглядеть консистентно платформе. Для кастомизации цветов используйте tint.
3️⃣ Тень под компонентами
4️⃣ Используйте tools:parentTag в <merge>
Это позволяет LayoutEditor понимать как отображать ваш UI в предпросмотре.
5️⃣ Отложенные парсинг layout XML с помощью ViewStub
Если часть вашего UI показывается опционально, то не стоит ее парсить сразу и делать, visibility="gone". Используйте ViewStub. Подробнее модно почитать здесь.
6️⃣ Старайтесь не использовать фиксированные разрешения
Фиксированные разрешения должны использоваться только в редких случаях когда вы знаете что размер должен быть строго такой и не может быть гибким. Например, ImageView с аватаром пользователя имеет размер 48x48dp. Просите дизайнера делать дизайн под большие и маленькие устройства, либо комментировать как должны адаптироваться элементы.
7️⃣ Размер текста: dp или sp?
Извечная дилемма. Я выбираю sp так как это делает приложение более удобным, потому что позволяет менять размер текста пользователем и приятно работать.
8️⃣ Используйте анимации при переходах
Наличие анимации позволяет пользователю понимать какой происходит переход и упрощает понимание работы приложения. Современный Android имеет множество средств и упрощений для работы с анимацией. Ждем Navigation и CoordinatorLayout, чтобы упростить это еще больше!
Также рекомендую освежать в памяти и почитывать гайды по Material Design. В них можно найти много полезного и вдохновится идеями для вашего приложения.
Medium
Android UI/UX Tips & Tricks
Most of the times we developers do 99% of the the Job and push it in users hand. The last 1% is a small number but really important. That…
#LibUpdates #ButterKnife #AndroidX
Butterknife 9 & 10 от Jake Wharton
Butterknife - это библиотека, избавившая нас от findViewById. Для тех кто использует Kotlin есть решение в виде Kotter Knife, которое не требует использование annotation процессора и делает код более Kotlin идиоматичным.
Butter Knife 9 привнес важные изменения по улучшению работы:
👉 Добавлена поддержка AndroidX (опционально)
👉 Выделен артефакт butterknife-runtime из butterknife, который содержит API, необходимое для сгенерированного кода, но не позволяет достучаться к сгенерированному коду через рефлексию. Это улучшает работу с R8/ProGuard
👉 Экспериментальный артефакт butterknife-reflect. Он заменяет собой annotation процессинг и позволяет ускорить сборку проекта. Подробнее читайте в README
👉 Android Lint проверки теперь работают в Kotlin.
👉 Добавлена поддержка Android Gradle Plugin 3.3
👉 Переход на Java 8 для всех артефактов
👉 Исправление багов
👉 Удалены deprecated методы из Butter Knife 8
👉 Binding шрифтов теперь работает на API ранее 26
Также вышел Butter Knife 10. Отличия минимальны:
👉 Полный переход на AndroidX
👉 Удалены deprecated методы из Butter Knife 9
Butterknife 9 & 10 от Jake Wharton
Butterknife - это библиотека, избавившая нас от findViewById. Для тех кто использует Kotlin есть решение в виде Kotter Knife, которое не требует использование annotation процессора и делает код более Kotlin идиоматичным.
Butter Knife 9 привнес важные изменения по улучшению работы:
👉 Добавлена поддержка AndroidX (опционально)
👉 Выделен артефакт butterknife-runtime из butterknife, который содержит API, необходимое для сгенерированного кода, но не позволяет достучаться к сгенерированному коду через рефлексию. Это улучшает работу с R8/ProGuard
👉 Экспериментальный артефакт butterknife-reflect. Он заменяет собой annotation процессинг и позволяет ускорить сборку проекта. Подробнее читайте в README
👉 Android Lint проверки теперь работают в Kotlin.
👉 Добавлена поддержка Android Gradle Plugin 3.3
👉 Переход на Java 8 для всех артефактов
👉 Исправление багов
👉 Удалены deprecated методы из Butter Knife 8
👉 Binding шрифтов теперь работает на API ранее 26
Также вышел Butter Knife 10. Отличия минимальны:
👉 Полный переход на AndroidX
👉 Удалены deprecated методы из Butter Knife 9
GitHub
butterknife/CHANGELOG.md at master · JakeWharton/butterknife
Bind Android views and callbacks to fields and methods. - JakeWharton/butterknife
Испольуйте ли вы Butter Knife в проекте?
Final Results
9%
Использую в Kotlin проект
25%
Использую в Java проекте
11%
Использую другие решения
52%
Не использую
2%
Не знал про эту библиотеку
#Fuchsia #ART
Google’s Fuchsia OS confirmed to have Android app support via Android Runtime от 9to5google.com
Обновления в AOSP позволяют сказать, что Fuchsia будет поддерживать Android приложения, имея специальную версию ART у себя на борту. Аналогично Chrome OS позволяет запускать Android приложения.
Пока строим догадки и ждем Google I/O для новостей
Google’s Fuchsia OS confirmed to have Android app support via Android Runtime от 9to5google.com
Обновления в AOSP позволяют сказать, что Fuchsia будет поддерживать Android приложения, имея специальную версию ART у себя на борту. Аналогично Chrome OS позволяет запускать Android приложения.
Пока строим догадки и ждем Google I/O для новостей
9to5Google
Google’s Fuchsia OS confirmed to have Android app support via Android Runtime
We've long suspected that Fuchsia would be able to run Android apps. Now, we have full confirmation that Fuchsia will directly support the Android Runtime.
#Kotlin #InlineClass
Inline Classes and Autoboxing in Kotlin от Dave Leeds
Kotlin 1.3 представил новую экспериментальную функциональность - Inline классы. Суть классов сводится к тому, что в Kotlin вы работает с ними как с обычными классами: объявляете функции, свойства; передаете в функции и пр, но при компиляции они разворачиваются и в итоговом коде вставляется оборачиваемый тип.
Inline классы имеет ряд ограничений, но самое важно понимать что есть случаи когда они остаются обычными классами:
👉 Когда Inline класс передается как объект суперкласса или реализуемого интерфейса
👉 Некоторые случае при autoboxing
За всеми подробностями хитростей работы нового типа классов читайте статью.
Inline Classes and Autoboxing in Kotlin от Dave Leeds
Kotlin 1.3 представил новую экспериментальную функциональность - Inline классы. Суть классов сводится к тому, что в Kotlin вы работает с ними как с обычными классами: объявляете функции, свойства; передаете в функции и пр, но при компиляции они разворачиваются и в итоговом коде вставляется оборачиваемый тип.
Inline классы имеет ряд ограничений, но самое важно понимать что есть случаи когда они остаются обычными классами:
👉 Когда Inline класс передается как объект суперкласса или реализуемого интерфейса
👉 Некоторые случае при autoboxing
За всеми подробностями хитростей работы нового типа классов читайте статью.
Dave Leeds on Kotlin
Inline Classes and Autoboxing
Get the best performance out of Kotlin's Inline Classes feature by understanding when they're inlined and when they're autoboxed.
#Gradle #Kotlin #DSL
Gradle Kotlin DSL converter
Для тех кто хочет мигрировать на Kotlin DSL в Gradle советую обратить внимание на Gradle Kotlin DSL converter. Это скрипт, написанный на Kotlin который выполняет базовые шаги миграции. Результат его работы вам еще придется доделывать, но он уже помогает со многими аспектами миграции.
Gradle Kotlin DSL converter
Для тех кто хочет мигрировать на Kotlin DSL в Gradle советую обратить внимание на Gradle Kotlin DSL converter. Это скрипт, написанный на Kotlin который выполняет базовые шаги миграции. Результат его работы вам еще придется доделывать, но он уже помогает со многими аспектами миграции.
GitHub
GitHub - bernaferrari/GradleKotlinConverter: Convert from Groovy to Kotlin DSL for Gradle, focused on Android.
Convert from Groovy to Kotlin DSL for Gradle, focused on Android. - GitHub - bernaferrari/GradleKotlinConverter: Convert from Groovy to Kotlin DSL for Gradle, focused on Android.
Everything you need in your app for 2019 от Adrian Devezin
Что будет трендами в Android разработки и надо использовать разработчикам, чтобы на любом собесе быть героем 😀 ?
Все тренды 2019 связаны с 3 векторами развития Android:
👉 телефоны становятся сильнее с большими вытянутыми экранами
👉 cледующий миллиард пользователей - это развивающиеся страны: Индия, страны Африки и Южной Америки, устройства на которых слабые
👉 приложения обрастают архитектурами, добавляются новые библиотеки, поддерживается множество версий Android и размеров экранов. Все это ведет к увеличению размеров APK
В статье вы найдете технологии, которые стоит применять:
👉 Android Architecture Components
👉 MVVM архитектура
👉 WorkManager
👉 Fastlane
👉 Layout для больших экранов, поддержка больших экранов, Chrome OS, складные телефоны
👉 ConstraintLayout
👉 Неблокирующий UI
👉 Material Design
👉 Поддержка темной темы
👉 Kotlin
👉 Kotlin Coroutines
👉 Перемещение управления вниз экрана
👉 App Bundle
👉 Dynamic Features
👉 Модуляризация приложений в Gradle
👉 Android Go версии приложений
Знаете еще тренды? Давайте обсуждать их в @android_broadcast_discussions
Что будет трендами в Android разработки и надо использовать разработчикам, чтобы на любом собесе быть героем 😀 ?
Все тренды 2019 связаны с 3 векторами развития Android:
👉 телефоны становятся сильнее с большими вытянутыми экранами
👉 cледующий миллиард пользователей - это развивающиеся страны: Индия, страны Африки и Южной Америки, устройства на которых слабые
👉 приложения обрастают архитектурами, добавляются новые библиотеки, поддерживается множество версий Android и размеров экранов. Все это ведет к увеличению размеров APK
В статье вы найдете технологии, которые стоит применять:
👉 Android Architecture Components
👉 MVVM архитектура
👉 WorkManager
👉 Fastlane
👉 Layout для больших экранов, поддержка больших экранов, Chrome OS, складные телефоны
👉 ConstraintLayout
👉 Неблокирующий UI
👉 Material Design
👉 Поддержка темной темы
👉 Kotlin
👉 Kotlin Coroutines
👉 Перемещение управления вниз экрана
👉 App Bundle
👉 Dynamic Features
👉 Модуляризация приложений в Gradle
👉 Android Go версии приложений
Знаете еще тренды? Давайте обсуждать их в @android_broadcast_discussions
Medium
Everything you need in your app for 2019
2018 was a big year for Android Developers. Google solidified more SDK components, further endorsed Kotlin, and gave us a lot of new tools…
#RecyclerView
Add extra depth to your list using parallax от Patrick Elmquist
NestedScroll - очень приятная и интересная вещь. Они помогают сделать UI очень интерактивным и оставляют лучшие впечатления от работы с приложением у пользователей. В статье вы найдете один рецепт как сделать параллакс эффект с двумя RecyclerView.
Add extra depth to your list using parallax от Patrick Elmquist
NestedScroll - очень приятная и интересная вещь. Они помогают сделать UI очень интерактивным и оставляют лучшие впечатления от работы с приложением у пользователей. В статье вы найдете один рецепт как сделать параллакс эффект с двумя RecyclerView.
Medium
Add extra depth to your list using parallax
Lists don’t always have to be linear and boring, in this post we’ll see how to add some extra depth to a horizontal list by adding a…
#Kotlin #Performance
Kotlin: For-loop vs ForEach от Elye
Kotlin добавил функция расширения для преобразования коллекций. Всегда ли они так эффективны? В статье вы найдете сравнение цикла for и forEach функции.
Результаты следующие:
👉 Для IntRange, LongRange и прочего - цикл for
👉 Для коллекций (list, set, map) - forEach функция
👉 Sequence - forEach функция
Kotlin: For-loop vs ForEach от Elye
Kotlin добавил функция расширения для преобразования коллекций. Всегда ли они так эффективны? В статье вы найдете сравнение цикла for и forEach функции.
Результаты следующие:
👉 Для IntRange, LongRange и прочего - цикл for
👉 Для коллекций (list, set, map) - forEach функция
👉 Sequence - forEach функция
Medium
Kotlin: For-loop vs ForEach
With Kotlin, we can write loop for(i in a..b){} and we could also do (a..b).forEach{}. Which should we use?
#BestPractices
Thoughts after two years as an Android Developer от Jakub Anioła
Советы разработчика после 2 лет создания приложение под Android:
👉 Следите за новостями в Android разработке
👉 Избегайте использования сторонних библиотек
👉 Делайте архитектуру для каждого приложения, независимо от его размера
👉 Тестируйте код
👉 Используйте CI и CD
👉 Используйте код ревью
👉 Kotlin поможет вам писать приложения быстрее и надежнее
👉 Не нужно всегда втягивать все самые трендовые технологии в проект
👉 Посещайте митапы сообществ и конференции, смотрите записи докладов
Thoughts after two years as an Android Developer от Jakub Anioła
Советы разработчика после 2 лет создания приложение под Android:
👉 Следите за новостями в Android разработке
👉 Избегайте использования сторонних библиотек
👉 Делайте архитектуру для каждого приложения, независимо от его размера
👉 Тестируйте код
👉 Используйте CI и CD
👉 Используйте код ревью
👉 Kotlin поможет вам писать приложения быстрее и надежнее
👉 Не нужно всегда втягивать все самые трендовые технологии в проект
👉 Посещайте митапы сообществ и конференции, смотрите записи докладов
Medium
Thoughts after two years as an Android Developer
Two years ago I have started my journey with Android programming. I was a bachelor’s degree student at the time, looking for the…
#GooglePay
8 Steps to Google Pay on Android от Joe Birch
Для тех кто планирует реализовать использование Google Pay в своем приложение будет полезно ознакомиться с руководством от Joe Birch
8 Steps to Google Pay on Android от Joe Birch
Для тех кто планирует реализовать использование Google Pay в своем приложение будет полезно ознакомиться с руководством от Joe Birch
Medium
8 Steps to Google Pay on Android
Within our Android Apps we can use the Google Pay API to plugin a convenient way for our users to checkout in our app, without the need…
#RecyclerView
Smooth cross RecyclingViews Swipe от Elye
Хотели сделать вложенный горизонтальный RecyclerView внутри вертикального RecyclerView как в Google Play? Вот вам руководство как правильно обрабатывать события жестов с помощью RecyclerView.OnItemTouchListener. За всеми подробностями реализации смотрите статью либо смотрите исходники на Github.
Smooth cross RecyclingViews Swipe от Elye
Хотели сделать вложенный горизонтальный RecyclerView внутри вертикального RecyclerView как в Google Play? Вот вам руководство как правильно обрабатывать события жестов с помощью RecyclerView.OnItemTouchListener. За всеми подробностями реализации смотрите статью либо смотрите исходники на Github.
Medium
Smooth cross RecyclingViews Swipe
This blog talks about how to scroll vertical Recyclerview and follow by Horizontal Recyclerview consecutively like in Google Playstore…
#Git #Github
New Year, New GitHub
Хорошие новости - GitHub пересмотрел свои планы и теперь приватные репозитории доступны в бесплатном плане. Меняются при Microsoft взгляды на сервис!
New Year, New GitHub
Хорошие новости - GitHub пересмотрел свои планы и теперь приватные репозитории доступны в бесплатном плане. Меняются при Microsoft взгляды на сервис!
The GitHub Blog
New year, new GitHub: Announcing unlimited free private repos and unified Enterprise offering
Today we’re announcing two major updates to make GitHub more accessible to developers.
#Kotlin #Contracts
Understanding Kotlin contracts от Marcin Moskala|KtAcademy
В Kotlin 1.3 появился новый экспериментальный функционал - Contracts. Он позволяет вам описать дополнительную информацию для компилятора о работе функции. Аналогичный функционал был уже на уровне аннотаций в Idea для Java. Мартин в статье рассказал о том, как работает этот механизм.
Understanding Kotlin contracts от Marcin Moskala|KtAcademy
В Kotlin 1.3 появился новый экспериментальный функционал - Contracts. Он позволяет вам описать дополнительную информацию для компилятора о работе функции. Аналогичный функционал был уже на уровне аннотаций в Idea для Java. Мартин в статье рассказал о том, как работает этот механизм.
Medium
Understanding Kotlin contracts
Since Kotlin 1.3 we can enjoy new, mysterious feature — Kotlin contracts. From the usage perspective, they look just like a piece of code…