TGViewer
Channel Public Channel
MobDev Portal | Мобильная Разработка

MobDev Portal | Мобильная Разработка

@mobdevportal

Присоединяйтесь к нашему каналу и погрузитесь в мир мобильной-разработки

Связь: @devmangx
Subscribers
5.38K
Photos
331
Videos
74
Links
282

Showing posts older than #298 · Back to latest

Older Posts 20 shown
Post #297 2.09K
Совет по SwiftUI

Используйте .redacted(reason: .placeholder), чтобы показать заглушку (временное представление), пока ваш контент загружается.

👉 @MobDevPortal | #tips
  • ❤ 5
Post #295 2.59K
Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS

Автор статьи рассказывает и делится примером реализации, как автоматизировать версию приложения в Kotlin Multiplatformдля Android и iOS.

Пример кода на GitHub → VersionExample

👉 Читать

👉 @MobDevPortal
  • 👍 7
  • 👎 1
Post #292 2.57K
Mastering Global State Management in Android with Jetpack Compose

Большая и полезная статья про то, как управлять глобальными стейтами по типу данных пользователя, настроек, фича-флагов и т.д. в приложении на Jetpack Compose.

Рассматриваются наиболее популярные подходы, с примерами реализации: Singleton Pattern, Shared ViewModel, StateHolder Pattern, Singleton Repository + Reusable Use Cases, CompositionLocal.

👉 Читать

👉 @MobDevPortal
  • 👍 2
Post #290 2.19K
Profiling apps using Instruments

У Apple есть серию туториалов по использованию Instruments для анализа производительности, ресурсов и поведения приложений.

🔸Getting started with hang analysis
🔸Identifying a hang
🔸Analyzing main thread activity
🔸Determining execution frequency
🔸Reducing main thread work by doing less
🔸Executing work asynchronously
🔸Understanding synchronous and asynchronous hangs
🔸Ensuring work executes on a background thread

👉 Читать

👉 @MobDevPortal
  • ❤ 1
  • 👍 1
Post #289 2.94K
Как работать с Custom Layout в Jetpack Compose

В этой статье вспоминаем, как вообще работают лейауты в Compose, обсуждаем изменение лейаута отдельного компонента, смотрим, как создавать кастомные Layout и LazyLayout и учимся откладывать композицию. И всё это на примерах, в том числе из дизайн-системы Авито.


🔸Контекст. Зачем нам кастомные Layout
🔸Как не стоит изменять Layout в Compose
🔸Layout в Jetpack Compose. Фазы фрейма
🔸Изменение layout отдельного компонента 
🔸Кастомный Layout
🔸Кастомный Layout. MultiMeasureLayout
🔸Кастомный Layout. Intrinsic Measurements 
🔸Отложенная композиция
🔸Отложенная композиция в SubcomposeLayout
🔸Кастомный LazyLayout
🔸Кастомный LazyLayout. MeasurePolicy
🔸Что стоит запомнить

👉 Читать

👉 @MobDevPortal
  • 👍 5
  • 👀 1
Post #287 2.39K
Совет по производительности в Swift: Эффективное кеширование цветов в коде

Мы все писали удобный инициализатор UIColor, создающий цвет напрямую из hex-строки. Однако при частом повторном рендеринге представлений и повторных вызовах этого инициализатора затрачиваются дополнительные процессорные ресурсы.

Чтобы избежать повторного выполнения полного инициализатора при каждом вызове hex-строки, можно использовать словарь для кеширования уже вычисленных цветов.

👉 @MobDevPortal | #tips
  • 👍 7
  • ❤ 2
Post #286 2.67K
Знаете ли вы, что Compose предоставляет готовый класс для генерации Lorem ipsum 🤯

Его также можно использовать как параметр provides.

Это очень полезно для создания превью

👉 @MobDevPortal | #tips
  • 👍 13
  • ❤ 4
Post #285 2.74K
12 tips to mastering Kotlin Coroutines

Статья с советами по использованию корутин.

🔸 Always Use Structured Concurrency
🔸 Prefer withContext Over async for Single Operations
🔸 Use async Only for Parallel Tasks
🔸 Never Use GlobalScope
🔸 Switch Dispatchers Wisely
🔸 Handle Exceptions Gracefully
🔸 Cancel Coroutines Properly
🔸 Use SupervisorJob for Independent Child Coroutines
🔸 Test Coroutines with runTest
🔸 Debounce User Input with Flows
🔸 Avoid Blocking Calls
🔸 Use coroutineScope for Scoped Parallelism

Полезно для новичков ✌️

👉 Читать

👉 @MobDevPortal
  • ❤ 4
  • 👍 1
Post #283 2.18K
💡 Совет по SwiftUI

Скрытие строки состояния и индикатора дома.

👉 @MobDevPortal | #tips
  • 👍 5
  • ❤ 1
Post #282 3.01K
Kelp — IDE-плагин для кастомных дизайн-систем на Jetpack Compose

Автор рассказывает про Kelp — мощный плагин для Android Studio, который он разработал для улучшения поддержки кастомных дизайн-систем на Jetpack Compose в Android Studio.

Kelp предлагает широкий набор функций, которые делают разработку UI быстрее и проще

🔸Настраиваемые иконки для компонентных функций
🔸Иконки дизайн-системы
🔸Предпросмотр цветов
🔸Интеграция демо-приложения
🔸Рендеринг изображений в KDoc
🔸Шаблоны кода (Live Templates)

Плагин на GitHub → Kelp

👉 Читать

👉 @MobDevPortal
  • ❤ 2
Post #280 2.71K
💡 Совет по SwiftUI

Используйте модификатор position(), чтобы разместить представление в определенных координатах внутри родительского.

👉 @MobDevPortal | #tips
  • 👍 4
  • ❤ 1
Post #279 2.99K
Одна из самых больших проблем в крупных Kotlin-проектах — поддержание консистентности, но обеспечить её сложно: это означает бесконечные напоминания и споры в PR'ах. Здесь и проявляет себя Konsist — относительно новая библиотека для Kotlin.

Konsist позволяет проверять следующее:
🔸Каждый наследник ViewModel должен иметь суффикс ViewModel
🔸Классы с аннотацией @Repository должны находиться в пакете ..repository..
🔸Параметры конструктора должны быть отсортированы в алфавитном порядке
🔸Имена параметров конструктора должны быть производными от имени класса
🔸Инъекция через поля и префикс m запрещены
🔸Каждый публичный член в пакете api должен быть задокументирован с помощью KDoc

Также Konsist позволяет проверять архитектуру проекта. Например, Clean Architecture:
🔸Domain-слой независим
🔸Data-слой зависит от Domain-слоя
🔸Presentation-слой зависит от Domain-слоя

Как же он соотносится с ArchUnit?

ArchUnit работает с байткодом JVM и не учитывает специфику Kotlin. Konsist анализирует код непосредственно и понимает Kotlin, а также намного проще в использовании.

Для меня Konsist — это инструмент для обеспечения консистентности проекта. Достаточно договориться о правилах, написать unit-тесты — и обсуждения в PR'ах больше не нужны, так как правила теперь соблюдаются автоматически ✌️

👉 @MobDevPortal | #tips
  • 👍 5
  • ❤ 2
Post #277 2.35K
💡Совет по SwiftUI

Начиная с iOS 17.0, вы можете предотвратить обрезку содержимого в ScrollView, используя модификатор scrollClipDisabled().

👉 @MobDevPortal | #tips
  • ❤ 7
  • 👍 2
Post #276 2.51K
Программирование на Kotlin для Android

Автор: Пьер-Оливье Лоране, Аманда Хинчман-Домингес, Дж. Блейк Мик, Майк Данн
Год: 2024

📂 Скачать книгу

👉 @MobDevPortal | #книги
  • 👍 8
  • ❤ 4
Post #274 2.46K
Даже при использовании режима сильного пропуска (strong skipping mode) следует отдавать предпочтение стабильным типам.

Наибольший источник нестабильных параметров — это коллекции. 𝐋𝐢𝐬𝐭, 𝐒𝐞𝐭 и 𝐌𝐚𝐩 являются нестабильными. Существует три основных способа справиться с этим

1️⃣ Самый безопасный способ — использовать PersistentList, PersistentSet и PersistentMap из библиотеки kotlinx.collections.immutable. Эти структуры являются стабильными и гарантируют настоящую неизменяемость

2️⃣ Более простой способ — заставить Compose интерпретировать List, Set и Map как стабильные в вашем проекте. Это можно сделать через настройку стабильности (stability config). В такой конфигурации также можно указать другие типы, например, LocalDateTime. Однако этот вариант небезопасен, так как может привести к непредсказуемым последствиям.

3️⃣ Последний и наименее популярный способ — обернуть коллекцию в класс-обертку, помечая её как неизменяемую. В наши дни это, пожалуй, наименее привлекательное решение, так как оно лишь скрывает проблему, но не решает её 🙄

👉 @MobDevPortal | #tips
  • ❤ 2
  • 🔥 1
Post #273 4.08K
Android Interview Questions

Большая и актуальная подборка вопросов с ответами для собседования по Android на русском языке.

— Kotlin
— Kotlin Coroutines
— Kotlin Flow API
— Android
— Jetpack Compose
— Android Библиотеки
— Android Архитектура
— Android System Design
— Android Unit Тестирование
— Android Инструменты и Технологии
— Java
— SOLID
— Структуры данных и алгоритмы

https://github.com/Senchick/android-interview

👉 @MobDevPortal | #ресурсы
  • 🔥 10
  • 👍 4
Post #271 2.83K
💡 SwiftUI Совет

Используйте .safeAreaInset(), чтобы закрепить важные кнопки, например «Продолжить» на экранах оплаты, внизу, позволяя основному контенту прокручиваться.

👉 @MobDevPortal | #tips
  • 👍 8
  • ❤ 4
Post #268 3K
Мое первое приложение на Kotlin

@MobDevPortal
  • 😁 44
  • 🔥 7
  • ❤ 3
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →