Иерархия модулей: как выстроить связи между модулями в Android
Еще одна полезная статья от ребят с HH, про зависимости между модулями, да и в целом про то, как выстроить иерархию модулей в Android.
Читать (Ru)
Еще одна полезная статья от ребят с HH, про зависимости между модулями, да и в целом про то, как выстроить иерархию модулей в Android.
Читать (Ru)
🔥11👍2👎1
Delegation Pattern: An effective way of replacing Android’s Base Activity with native Kotlin support
Статья в которой рассматриваются общие вопросы паттерна Delegation и в качестве примера показано как с помощью Kotlin Delegate можно избавиться от Base Activity.
Базовые классы vs Делегаты – вечно холиварная тема. На всякий случай про базовые классы, т.к. в Java/Kotlin нет множественного наследования классов, приходиться всё пихать в базовый класс, что собственно нарушает Single Responsibility Principle из SOLID.
Читать (En)
Статья в которой рассматриваются общие вопросы паттерна Delegation и в качестве примера показано как с помощью Kotlin Delegate можно избавиться от Base Activity.
Базовые классы vs Делегаты – вечно холиварная тема. На всякий случай про базовые классы, т.к. в Java/Kotlin нет множественного наследования классов, приходиться всё пихать в базовый класс, что собственно нарушает Single Responsibility Principle из SOLID.
Читать (En)
👍6💩5❤1👎1🔥1
Few steps to new level security — Play Integrity API for Android apps.
Полезная статья о том, как можно повысить уровень безопасности вашего приложения с помощью Play Integrity API.
Читать (En)
Полезная статья о том, как можно повысить уровень безопасности вашего приложения с помощью Play Integrity API.
Читать (En)
👍8🔥1👏1🤩1
How to move View with Keyboard in Android using Kotlin
Несколько дней назад решил чутка заморочиться и сделать анимацию кнопки при появлении клавиатуры на API 30+, а сегодня на глаза попалась статья, в которой как раз подробно разибрается как это реализовать.
У меня правда кейс был чуть посложнее, чем пример из статьи – было 3 кнопки вертикально и двигать нужно было самую верхнюю.
Вот еще несколько статей, которыми я воспользовался. Они 2020 года и там некоторые методы уже Deprecated, но суть понятна.
👉 Animating your keyboard (part 1)
👉 Animating your keyboard (part 2): reacting to WindowInset animations
Читать (En)
Несколько дней назад решил чутка заморочиться и сделать анимацию кнопки при появлении клавиатуры на API 30+, а сегодня на глаза попалась статья, в которой как раз подробно разибрается как это реализовать.
У меня правда кейс был чуть посложнее, чем пример из статьи – было 3 кнопки вертикально и двигать нужно было самую верхнюю.
Вот еще несколько статей, которыми я воспользовался. Они 2020 года и там некоторые методы уже Deprecated, но суть понятна.
👉 Animating your keyboard (part 1)
👉 Animating your keyboard (part 2): reacting to WindowInset animations
Читать (En)
👍9🔥6
Как создавать анимации в Jetpack Compose
Неплохая статья с разбором и примерами анимаций в Jetpack Compose. Какие есть виды анимаций, создание высокоуровневых и низкоуровневых анимаций, способы кастомизации.
Читать (Ru)
Неплохая статья с разбором и примерами анимаций в Jetpack Compose. Какие есть виды анимаций, создание высокоуровневых и низкоуровневых анимаций, способы кастомизации.
Читать (Ru)
👍12
MVI with state-machine
Серия статей о том, как готовить MVI + state-machine в Android.
👉 Part 1 – Basics
👉 Part 2 – Tools
👉 Part 3 – Modules
Серия статей о том, как готовить MVI + state-machine в Android.
👉 Part 1 – Basics
👉 Part 2 – Tools
👉 Part 3 – Modules
👍9
Testing Api layer in Android - Testing Fundamentals
Четвертая часть из цикла статей "Android Testing Fundamentals", в которой рассказывается про то, как писать unit тесты для сетевого слоя.
Читать (En)
Четвертая часть из цикла статей "Android Testing Fundamentals", в которой рассказывается про то, как писать unit тесты для сетевого слоя.
Читать (En)
🔥5👍2
6 Jetpack Compose Guidelines to Optimize Your App Performance
Несколько рекомендаций с примерами кода про оптимизации в Jetpack Compose.
👉 Write Stable Classes
👉 Rules for Writing classes
👉 State properly
👉 State read scope
👉 Running expensive calculations
👉 Defer reads
Читать (En)
Несколько рекомендаций с примерами кода про оптимизации в Jetpack Compose.
👉 Write Stable Classes
👉 Rules for Writing classes
👉 State properly
👉 State read scope
👉 Running expensive calculations
👉 Defer reads
Читать (En)
👍9🔥1
How To Avoid Use Cases Boilerplate in Android
Полезная статья, в которой рассматривается несколько подходов, с помощью которых можно уменьшить количество бойлерплейт кода для UseCases.
Приоритетный подход от автора через котлиновские Functional (SAM) interfaces.
Читать (En)
Полезная статья, в которой рассматривается несколько подходов, с помощью которых можно уменьшить количество бойлерплейт кода для UseCases.
Приоритетный подход от автора через котлиновские Functional (SAM) interfaces.
Читать (En)
👍5🔥4💩2
MAD Skills series on Performance
Если вдруг кто-то пропустил, стартовала новая серия статей про performance в рамках MAD Skills. Вышло уже 4 части, в которых разбираются такие штуки как: фазы старта приложения, скорость отрисовки кадров, как улучшить перфоманс с помощью Baseline Profiles.
👉 Introducing the MAD Skills series on Performance
👉 Important Performance Metrics
👉 Inspecting Performance
👉 Improving Performance with Baseline Profiles
Если вдруг кто-то пропустил, стартовала новая серия статей про performance в рамках MAD Skills. Вышло уже 4 части, в которых разбираются такие штуки как: фазы старта приложения, скорость отрисовки кадров, как улучшить перфоманс с помощью Baseline Profiles.
👉 Introducing the MAD Skills series on Performance
👉 Important Performance Metrics
👉 Inspecting Performance
👉 Improving Performance with Baseline Profiles
👍11
Optimizing RecyclerView : Pre-inflated ViewPool
Вот вам интересная статейка про то, как можно оптимизировать RecyclerView с помощью Prefetch +
Вот такой прирост в скорости получился:214.19ms → 118.35ms
Читать (En)
Вот вам интересная статейка про то, как можно оптимизировать RecyclerView с помощью Prefetch +
AsyncLayoutInflater.Вот такой прирост в скорости получился:
Читать (En)
👍23💩2🤔1
Часто вижу, как какой-то простой функционал делают через ж… неправильно, будь то верстка или какие-то участки кода и т.д.. Решил такие штуки с разбором иногда постить на канале.
Сегодня про верстку.
Довольно популярный кейс, встречается наверное в каждом приложении. Нужно показать какой-нибуь текст с иконкой перед ним или после него. Казалось бы всё просто, НО, очень часто встречаю верстку из 2-ух вьюх 🤦♂️. Выглядит это так: TextView + ImageView. Капец как меня такое бесит.
Ну зачем так делать, если можно обойтись одним
И да, программно тоже можно задать иконку для
Вывод: не нужно изобретать велосипед, используйте компоненты по назначению и пользуйтесь функциями, которые уже есть в SDK.
Сегодня про верстку.
Довольно популярный кейс, встречается наверное в каждом приложении. Нужно показать какой-нибуь текст с иконкой перед ним или после него. Казалось бы всё просто, НО, очень часто встречаю верстку из 2-ух вьюх 🤦♂️. Выглядит это так: TextView + ImageView. Капец как меня такое бесит.
Ну зачем так делать, если можно обойтись одним
TextView, там же есть нужный функционал для такого кейса drawableEndCompat/drawableStartCompat. Так нет, нужно нагородить дополнительно ImageView, а потом еще в коде добавить логики по отображение и т.д.И да, программно тоже можно задать иконку для
TextView, например через TextViewCompat.setCompoundDrawablesRelative()Вывод: не нужно изобретать велосипед, используйте компоненты по назначению и пользуйтесь функциями, которые уже есть в SDK.
👍57👎32🔥6🤔4
Jetpack Compose for Android Developers
Курсы от гугла по использованию Jetpack Compose.
👉 Compose essentials
👉 Layouts, theming, and animation
👉 Architecture and state
👉 Accessibility, testing, and performance
👉 Form factors
Курсы от гугла по использованию Jetpack Compose.
👉 Compose essentials
👉 Layouts, theming, and animation
👉 Architecture and state
👉 Accessibility, testing, and performance
👉 Form factors
👍19🥰3
Фреймворк для мобильных приложений DivKit
Статья от Яндекса, про их новый опенсорсный фреймворк DivKit, с разбором возможностей на примерах. Инструмент позволяет внедрить подход server-driven UI второго поколения, то есть не просто описывать параметры блоков интерфейса с сервера, но и управлять всей версткой.
Код на GitHub → DivKit
Читать (Ru)
Статья от Яндекса, про их новый опенсорсный фреймворк DivKit, с разбором возможностей на примерах. Инструмент позволяет внедрить подход server-driven UI второго поколения, то есть не просто описывать параметры блоков интерфейса с сервера, но и управлять всей версткой.
Код на GitHub → DivKit
Читать (Ru)
💩24👍9🔥2
Testing Composable in Jetpack Compose Android
Пятая часть из цикла статей "Android Testing Fundamentals", в которой рассказывается как тестировать Composable в Jetpack Compose.
👉 Creating a Composable
👉 Setting up the test environment
👉 Writing test cases
Читать (En)
Пятая часть из цикла статей "Android Testing Fundamentals", в которой рассказывается как тестировать Composable в Jetpack Compose.
👉 Creating a Composable
👉 Setting up the test environment
👉 Writing test cases
Читать (En)
👍7
Почему я больше не буду использовать deep linking из Navigation Component
Если еще не читали статью про deep linking из Navigation Component, обязательно почитайте. Там про некоторые недостатки с которыми ребята солкнулись при работе с deep linking из navigation component.
Сам я диплинки из navigation component еще не юзал, но выглядит это так, как будто лучше написать свой handler, это будет более гибким вариантом и более настраевым в поведении.
Это уже не первая статья, на эту тему, вот еще несколько.
👉 Navigation Component-дзюцу, vol. 3 — Corner-кейсы
👉 Как мы внедряли навигацию из Jetpack в боевое приложение. Доклад Яндекс.Еды
Читать (Ru)
Если еще не читали статью про deep linking из Navigation Component, обязательно почитайте. Там про некоторые недостатки с которыми ребята солкнулись при работе с deep linking из navigation component.
Сам я диплинки из navigation component еще не юзал, но выглядит это так, как будто лучше написать свой handler, это будет более гибким вариантом и более настраевым в поведении.
Это уже не первая статья, на эту тему, вот еще несколько.
👉 Navigation Component-дзюцу, vol. 3 — Corner-кейсы
👉 Как мы внедряли навигацию из Jetpack в боевое приложение. Доклад Яндекс.Еды
Читать (Ru)
👍10👎2
В Google Play разрешили использовать сторонние способы оплаты в РФ
Вчера ближе к ночи во многих источниках появилась новость "Google разрешил пользователям из РФ применять альтернативные способы оплаты покупок". Посмотрел несколько источников и никаких точной инфы там не увидел. Пошёл смотреть Support - Play Console.
И вот что там написано
"Начиная со 2 августа 2022 г., положения правил Google Play в отношении платежей, требующие использования платежной системы Google Play, не применяются к разработчикам, распространяющим приложения через Google Play, требующим или принимающим платежи от пользователей в России в данный период времени."
Похоже, что все таки реально разрешили сторонние способы оплаты на период блокировки.
👉 Изменения в платежной системе Google Play
👉 Платежи
Вчера ближе к ночи во многих источниках появилась новость "Google разрешил пользователям из РФ применять альтернативные способы оплаты покупок". Посмотрел несколько источников и никаких точной инфы там не увидел. Пошёл смотреть Support - Play Console.
И вот что там написано
"Начиная со 2 августа 2022 г., положения правил Google Play в отношении платежей, требующие использования платежной системы Google Play, не применяются к разработчикам, распространяющим приложения через Google Play, требующим или принимающим платежи от пользователей в России в данный период времени."
Похоже, что все таки реально разрешили сторонние способы оплаты на период блокировки.
👉 Изменения в платежной системе Google Play
👉 Платежи
👎23👍18👏1🤔1🤡1
MVI for Compose
Еще одна серия статей про организацию MVI для Compose. Разбираются некоторые особенности MVVM, чем отличаюется MVI от MVVM, ну и примеры кода и best practices.
👉 Part 1 – Problems and benefits of MVVM
👉 Part 2 – Custom MVI
👉 Part 3 – Practical examples, continued implementation
👉 Part 4 – Automating / Reducing boilerplate
👉 Part 5 – Best practices and conclusions
Еще одна серия статей про организацию MVI для Compose. Разбираются некоторые особенности MVVM, чем отличаюется MVI от MVVM, ну и примеры кода и best practices.
👉 Part 1 – Problems and benefits of MVVM
👉 Part 2 – Custom MVI
👉 Part 3 – Practical examples, continued implementation
👉 Part 4 – Automating / Reducing boilerplate
👉 Part 5 – Best practices and conclusions
👍17
Глубокое погружение в Java Memory Model
Недавно смотрел очередной публичный собес и там поверхностно поднималась тема Java Memory Model.
Подумал, что нужно погуглить толковых материалов на этот счет и освежить память, а сегодня как раз на глаза попалась огненая статья про JMM с детальным разбором.
👉 Memory ordering
👉 Data race
👉 Happens-before
👉 Volatile
👉 Cache coherence
Однозначно в избранное ✅
Читать (Ru)
Недавно смотрел очередной публичный собес и там поверхностно поднималась тема Java Memory Model.
Подумал, что нужно погуглить толковых материалов на этот счет и освежить память, а сегодня как раз на глаза попалась огненая статья про JMM с детальным разбором.
👉 Memory ordering
👉 Data race
👉 Happens-before
👉 Volatile
👉 Cache coherence
Однозначно в избранное ✅
Читать (Ru)
🔥24👍3
Algorithms and Design Patterns
Сразу несколько полезных материалов по алгоритмам. В первом собраны наиболее распространенные алгоритмы, структуры данных и паттерны проектирования на Kotlin. Второй – онлайн сервис, с множеством статей по различным алгоритмам, структурам и т.д.
👉 Kotlin Algorithms and Design Patterns
👉 Алгоритмика
Сразу несколько полезных материалов по алгоритмам. В первом собраны наиболее распространенные алгоритмы, структуры данных и паттерны проектирования на Kotlin. Второй – онлайн сервис, с множеством статей по различным алгоритмам, структурам и т.д.
👉 Kotlin Algorithms and Design Patterns
👉 Алгоритмика
🔥18👍6
Android Access Token Logic With Retrofit OkHttp Interceptors
Пример реализации обновления токена (OAuth) через OkHttp Interceptors. В целом довольно стандартная реализация, но вдруг кому-то понадобится.
Читать (En)
Пример реализации обновления токена (OAuth) через OkHttp Interceptors. В целом довольно стандартная реализация, но вдруг кому-то понадобится.
Читать (En)
👍24👎1🔥1👏1