#AndroidKTX #Drawing #Kotlin
Android Canvas APIs with Kotlin and KTX
Библиотека Android KTX значительно упрощает разработку приложений на Kotlin, предоставляя Kotlin расширения для API из Android SDK.
Одно из таких удобных расширений - расширения для Canvas API.
Давайте посмотрим на результаты работы с новым API.
Без Android KTX:
С Android KTX
Плюсы от использования Android KTX - более читабельный код и невозможность избежать ошибки с вызовами
Android Canvas APIs with Kotlin and KTX
Библиотека Android KTX значительно упрощает разработку приложений на Kotlin, предоставляя Kotlin расширения для API из Android SDK.
Одно из таких удобных расширений - расширения для Canvas API.
Давайте посмотрим на результаты работы с новым API.
Без Android KTX:
val translateCheckpoint = canvas.save()canvas.translate(200f, 300f) canvas.drawCircle(...)val rotateCheckpoint = canvas.save()canvas.rotate(45f) canvas.drawRect(...)canvas.restoreToCount(rotateCheckpoint)canvas.restoreToCount(translateCheckpoint)С Android KTX
canvas.withTranslate(200f, 300f) { drawCircle(...) withRotate(45f) { drawRect(...) }}Плюсы от использования Android KTX - более читабельный код и невозможность избежать ошибки с вызовами
save/restore().👍1
#Debug #Native
Debugging Native Crashes in Android Apps
По статистике на декабрь 2018 года 100 самых популярных приложений были установлены 54 миллиарда раз из 85 из них содержат нативный код.
Хотите сделать конкурента таким приложением или статью часть их команды? Без знания C/C++ уже не обойтись с ростом навыков, но любому разработчику будет полезно знать как дебажить такой код.
В статье вы найдете руководство с чего начать поиск проблемы, когда ваше приложение падает на уровне нативного кода.
Debugging Native Crashes in Android Apps
По статистике на декабрь 2018 года 100 самых популярных приложений были установлены 54 миллиарда раз из 85 из них содержат нативный код.
Хотите сделать конкурента таким приложением или статью часть их команды? Без знания C/C++ уже не обойтись с ростом навыков, но любому разработчику будет полезно знать как дебажить такой код.
В статье вы найдете руководство с чего начать поиск проблемы, когда ваше приложение падает на уровне нативного кода.
Medium
Debugging Native Crashes in Android Apps
A Simple End-to-End Example with ProGuard
👍1
#StrcitMode #Performance
StrictModeCompat Library
Я реализовал библиотеку StrictModeCompat для удобной работы с StrictMode на всех версиях Android. Она позволяет безопасно вызывать любой метод аналогично тому, как это сделано в AndroidX. В статье ниже вы найдете описание проблемы и как подключить библиотеку к вашему проекту.
StrictModeCompat Library
Я реализовал библиотеку StrictModeCompat для удобной работы с StrictMode на всех версиях Android. Она позволяет безопасно вызывать любой метод аналогично тому, как это сделано в AndroidX. В статье ниже вы найдете описание проблемы и как подключить библиотеку к вашему проекту.
Medium
StrictModeCompat Library
Init StrcitMode safely on any Android version
👍1
#Material #Design #BottomSheet
Hands-on with Material Components for Android: Bottom Sheet
Третья статья из серии о компонентах Material Design и как их использовать в Android. В текущей рассматривается Bottom Sheet:
👉 Виды Bottom Sheet
👉 Базисы использования
👉 BottomSheetBehavior
👉 Состояния Bottom Sheet и как его сохранить
👉 Оповещение об изменение состояния
👉 Кастомизация
Hands-on with Material Components for Android: Bottom Sheet
Третья статья из серии о компонентах Material Design и как их использовать в Android. В текущей рассматривается Bottom Sheet:
👉 Виды Bottom Sheet
👉 Базисы использования
👉 BottomSheetBehavior
👉 Состояния Bottom Sheet и как его сохранить
👉 Оповещение об изменение состояния
👉 Кастомизация
Medium
Hands-on with Material Components for Android: Bottom Sheets
Part 3 of a series covering practical usage of Material Components for Android
👍1
#Rx #Library #RxJava
Rxify: Retry with Exponential Backoff in RxJava
Библиотека для всех любителей RxJava, которая позволяет повторять выполнение Observable, при появление ошибке с экспоненциальным таймаутом повторения.
Rxify Github Repo
Rxify: Retry with Exponential Backoff in RxJava
Библиотека для всех любителей RxJava, которая позволяет повторять выполнение Observable, при появление ошибке с экспоненциальным таймаутом повторения.
Rxify Github Repo
Medium
Rxify: Exponential Backoff on retry
Whenever we think of retrying there are quite a few options available to us. Create a custom solution with recursion perhaps or maybe an…
👍1
#Vector #Drawable #
Alex Lockwood - Vector workflows | Øredev 2018
Запись доклада о векторной графики в Android: устройство, ограничения, крутые фичи и пр.
Alex Lockwood - Vector workflows | Øredev 2018
Запись доклада о векторной графики в Android: устройство, ограничения, крутые фичи и пр.
Vimeo
Alex Lockwood - Vector workflows | Øredev 2018
Vector assets are lightweight and sharp on every screen size, but working with them can be complicated. Android doesn’t directly support SVG, potentially leading…
👍1
#Marbel #Emulator
Android Emulator : Project Marble Improvements
Project Marble шагает по инструментарию разработчиков. Настала очередь рассказа изменений в эмуляторе. Разработчики жаловались на то, что Android эмулятор потребляет много системных ресурсов. Googleры решили уменьшить потребление CPU ресурсов. Результаты этой работы можно посмотреть в Android Emulator 28.1, который доступен в Canary канале.
Что именно было сделано:
1️⃣ Теперь устройства в эмуляторе по умолчанию работают от батареи (а не от зарядки). Это связано с тем, что большая часть сервисов оптимизирована для экономного расхода заряда батареи. Эти оптимизации работают только если устройство не заряжается.
2️⃣ Возможность поставить эмулятор на паузу. Это позволяет уменьшить расход ресурсов, когда вы не используете эмулятор, например во время правок кода. Используйте
3️⃣ Снижение затрат на отрисовку. Теперь отрисовка стала эффективнее (график приведен ниже) и повышена частота кадров
4️⃣ Оптимизация IO операций на macOS. Это позволило здорово сократить нагрузку на CPU c ~10% до ~3%
5️⃣ Headless Build (запуск эмулятора без UI). Это функция пригодится тем кто использует эмуляторы на CI или вам не нужно тестировать UI. Она позволяет сократить потребление RAM на 100 Mb
Android Emulator : Project Marble Improvements
Project Marble шагает по инструментарию разработчиков. Настала очередь рассказа изменений в эмуляторе. Разработчики жаловались на то, что Android эмулятор потребляет много системных ресурсов. Googleры решили уменьшить потребление CPU ресурсов. Результаты этой работы можно посмотреть в Android Emulator 28.1, который доступен в Canary канале.
Что именно было сделано:
1️⃣ Теперь устройства в эмуляторе по умолчанию работают от батареи (а не от зарядки). Это связано с тем, что большая часть сервисов оптимизирована для экономного расхода заряда батареи. Эти оптимизации работают только если устройство не заряжается.
2️⃣ Возможность поставить эмулятор на паузу. Это позволяет уменьшить расход ресурсов, когда вы не используете эмулятор, например во время правок кода. Используйте
adb emu avd pause/resume для теста.3️⃣ Снижение затрат на отрисовку. Теперь отрисовка стала эффективнее (график приведен ниже) и повышена частота кадров
4️⃣ Оптимизация IO операций на macOS. Это позволило здорово сократить нагрузку на CPU c ~10% до ~3%
5️⃣ Headless Build (запуск эмулятора без UI). Это функция пригодится тем кто использует эмуляторы на CI или вам не нужно тестировать UI. Она позволяет сократить потребление RAM на 100 Mb
👍2
#AOSP
AOSP Application Updates
Чистка референсных приложений в AOSP. Упрощены музыкальный плеер, календарь и калькулятор и теперь они выполняют самый простейший функционал, например мызукалтный плеер поддерживает только проигрывание одного трека. Причина проста - оно не поддерживаются, функции их не соответствуют современным требованиям. В будущем чистка может задеть и другие приложения.
AOSP Application Updates
Чистка референсных приложений в AOSP. Упрощены музыкальный плеер, календарь и калькулятор и теперь они выполняют самый простейший функционал, например мызукалтный плеер поддерживает только проигрывание одного трека. Причина проста - оно не поддерживаются, функции их не соответствуют современным требованиям. В будущем чистка может задеть и другие приложения.
👍1
#GoogleIO
Google I/O 2019 schedule was released
Опубликовано расписание сессий на предстоящем Google I/O. Исходя из его анализа можно понять что нас ждет:
🔥библиотека AndroidX.Camera, которая решит проблемы с особенностями работы на особенностях реализации на устройствах разных производителей
🔥подробности темной темы в Android Q
🔥библиотека для бенчмарков в AndroidX
🔥релиз Constraint Layout 2.0 и Motion Layout
🔥обновления в Arch Components
🔥Что было сделано в рамках Project Marbel - обещанной оптимизации работы инструментов разработчика и устранению багов
ВАЖНО: информация неточная и построена на моих предположениях из описания докладов.
К сожалению, пока в расписании не видно докладов о Fuchsia OS (может они появятся на сайте после громких анонсов на Keynote)б
Google I/O 2019 schedule was released
Опубликовано расписание сессий на предстоящем Google I/O. Исходя из его анализа можно понять что нас ждет:
🔥библиотека AndroidX.Camera, которая решит проблемы с особенностями работы на особенностях реализации на устройствах разных производителей
🔥подробности темной темы в Android Q
🔥библиотека для бенчмарков в AndroidX
🔥релиз Constraint Layout 2.0 и Motion Layout
🔥обновления в Arch Components
🔥Что было сделано в рамках Project Marbel - обещанной оптимизации работы инструментов разработчика и устранению багов
ВАЖНО: информация неточная и построена на моих предположениях из описания докладов.
К сожалению, пока в расписании не видно докладов о Fuchsia OS (может они появятся на сайте после громких анонсов на Keynote)б
👍1
Интересные доклады по моему мнению следующие:
What's New in Android
Android:
👉 Understanding Android Runtime (ART) for Faster Apps
👉 Best Practices for Using Sign-In for Android Apps
👉 Security on Android: What's Next
👉 What's New in the Android OS User Interface
👉 Moving Away from the Light with Android Q
👉 Best Practices for Using Text in Android
👉 Demystifying Android Accessibility Development
👉 Improve Digital Wellbeing: Google's Approach and Tips for Developers
👉 Extend Your Android App to the Google Assistant
Android Jetpack:
👉 Android Jetpack: What's New in Navigation
👉 Android Jetpack: Understand the CameraX Camera-Support Library
👉 What's New in Architecture Components
👉 What's New with ConstaintLayout
👉 Improving App Performance with Benchmarking
Architecture:
👉 Build a Modular Android App Architecture
👉 Build Apps for Foldable, Multi-Display, and Large-Screen Devices
👉 Build Testable Apps for Android
👉 Build Apps for the Next Billion Users
Tools:
👉 Best Practices in Using the Android Emulator
👉 What's New in Android Studio UI Design and Debugging Tools
👉 What's New in the Android Studio Build System
👉 Android Studio: Tips and Tricks
👉 Build Bigger, Better: Gradle for Large Projects
Design:
👉 Material Theming: Build Expressively with Material Components
👉 How Material Design Can Be Adopted and Measured for Product Success
👉 How to Design a Dark Theme Using Material
Google Play:
👉 What's New in Google Play
👉 What's New with Google Play Billing
👉 What's Next for Your App Bundle: Customizable App and Games Delivery
👉 Best Practices in Boosting Optimized App Installs on Google Play
👉 Improve Your App and Game Quality with Android Vitals
Kotlin:
👉 Understand Kotlin Coroutines on Android
👉 What's New in Kotlin on Android
👉 Kotlin on Android: Understand the Internals
Firebase:
👉 What's New in Firebase
👉 Cloud Firestore Data Modeling
👉 Engage and Keep Your Users in Your App with Firebase
👉 ML Kit: Machine Learning for Mobile with Firebase
Machine Learning:
👉 What’s New in Android Machine Learning
👉 ML Kit x Material Design: Design Patterns for Mobile Machine Learning
👉 Introducing Google Coral: Building On-Device AI
👉 AI for Mobile and IoT Devices: TensorFlow Lite
👉 Machine Learning on Your Device: The Options
What's New in Android
Android:
👉 Understanding Android Runtime (ART) for Faster Apps
👉 Best Practices for Using Sign-In for Android Apps
👉 Security on Android: What's Next
👉 What's New in the Android OS User Interface
👉 Moving Away from the Light with Android Q
👉 Best Practices for Using Text in Android
👉 Demystifying Android Accessibility Development
👉 Improve Digital Wellbeing: Google's Approach and Tips for Developers
👉 Extend Your Android App to the Google Assistant
Android Jetpack:
👉 Android Jetpack: What's New in Navigation
👉 Android Jetpack: Understand the CameraX Camera-Support Library
👉 What's New in Architecture Components
👉 What's New with ConstaintLayout
👉 Improving App Performance with Benchmarking
Architecture:
👉 Build a Modular Android App Architecture
👉 Build Apps for Foldable, Multi-Display, and Large-Screen Devices
👉 Build Testable Apps for Android
👉 Build Apps for the Next Billion Users
Tools:
👉 Best Practices in Using the Android Emulator
👉 What's New in Android Studio UI Design and Debugging Tools
👉 What's New in the Android Studio Build System
👉 Android Studio: Tips and Tricks
👉 Build Bigger, Better: Gradle for Large Projects
Design:
👉 Material Theming: Build Expressively with Material Components
👉 How Material Design Can Be Adopted and Measured for Product Success
👉 How to Design a Dark Theme Using Material
Google Play:
👉 What's New in Google Play
👉 What's New with Google Play Billing
👉 What's Next for Your App Bundle: Customizable App and Games Delivery
👉 Best Practices in Boosting Optimized App Installs on Google Play
👉 Improve Your App and Game Quality with Android Vitals
Kotlin:
👉 Understand Kotlin Coroutines on Android
👉 What's New in Kotlin on Android
👉 Kotlin on Android: Understand the Internals
Firebase:
👉 What's New in Firebase
👉 Cloud Firestore Data Modeling
👉 Engage and Keep Your Users in Your App with Firebase
👉 ML Kit: Machine Learning for Mobile with Firebase
Machine Learning:
👉 What’s New in Android Machine Learning
👉 ML Kit x Material Design: Design Patterns for Mobile Machine Learning
👉 Introducing Google Coral: Building On-Device AI
👉 AI for Mobile and IoT Devices: TensorFlow Lite
👉 Machine Learning on Your Device: The Options
👍1
#FFmpeg #Audio #Performance
Using FFmpeg for faster audio decoding
Статья о том как использовать FFmpeg на Android. По сравнению со стандартными доступными средствами в Android NDK, FFmpeg позволяет повысить скорость обработки аудио в 10 раз (протестировано на Google Pixel XL).
Using FFmpeg for faster audio decoding
Статья о том как использовать FFmpeg на Android. По сравнению со стандартными доступными средствами в Android NDK, FFmpeg позволяет повысить скорость обработки аудио в 10 раз (протестировано на Google Pixel XL).
Medium
Using FFmpeg for faster audio decoding
Building and packaging FFmpeg for Android
👍1
#MobilePeople #Podcast #GoogleIO #EPAM
EPAM активно поддерживает около ITшные сообщества разработчиков по разным направлениям. Одно из таких сообществ - Mobile People. В рамках этой инициативы зародился подкаст Mobile People Talks - подкаст про мобильную разработку с взглядами из различным направлений.
Я очень рад что смог стать частью этого (спасибо Данису Тазетдинову за приглашение).
В первом выпуске мы обсудили предстоящий Google I/O: Android Q, куда все движется, чего каждый из нас ждет и как всегда похоливарили 😁
EPAM активно поддерживает около ITшные сообщества разработчиков по разным направлениям. Одно из таких сообществ - Mobile People. В рамках этой инициативы зародился подкаст Mobile People Talks - подкаст про мобильную разработку с взглядами из различным направлений.
Я очень рад что смог стать частью этого (спасибо Данису Тазетдинову за приглашение).
В первом выпуске мы обсудили предстоящий Google I/O: Android Q, куда все движется, чего каждый из нас ждет и как всегда похоливарили 😁
👍1
Какую библиотеку для загрузки изображений используете вы в своих последних приложениях?
Final Results
80%
Glide (bumptech.github.io/glide/)
11%
Picasso (square.github.io/picasso)
2%
Universal Image Loader (github.com/nostra13/Android-Universal-Image-Loader)
0%
Facebook Fresco (frescolib.org)
0%
Другая библиотека
2%
Androiв SDK only
6%
Не работаю с изображениями
👍1
#Glide #Image #Cache
Best strategy to load images using Glide
Glide - это довольно популярное решение для загрузки изображений. Я использую именно за его широкие возможности, поддержку добавления загрузки и кэширования собственных типов данных и широкие возможности по пост обработки изображения перед показом картинки пользователю.
В статье выше нашел пару интересных моментов по использованию Glide:
👉 Добавляйте url превью картинки более мелкого размера (thumbnail), это позволит показать результат пользователю быстрее но в более низком качестве
👉 Выполняйте периодическую очистку кэша. Например, можно создать периодическую Work, использую WorkManager, которая будет очищать старый кэш.
Best strategy to load images using Glide
Glide - это довольно популярное решение для загрузки изображений. Я использую именно за его широкие возможности, поддержку добавления загрузки и кэширования собственных типов данных и широкие возможности по пост обработки изображения перед показом картинки пользователю.
В статье выше нашел пару интересных моментов по использованию Glide:
👉 Добавляйте url превью картинки более мелкого размера (thumbnail), это позволит показать результат пользователю быстрее но в более низком качестве
👉 Выполняйте периодическую очистку кэша. Например, можно создать периодическую Work, использую WorkManager, которая будет очищать старый кэш.
Medium
Best strategy to load images using Glide — Image loading library for Android
Glide is an Image Loader Library for Android developed by bumptech and is a library that is recommended by Google. It has been used in…
👍1
Android Broadcast
Какую библиотеку для загрузки изображений используете вы в своих последних приложениях?
По итогам опроса о популярности библиотеки для загрузки изображений победителем стал Glide 🎉🎉🎉
👍1