Lynx уже используют много где для встраивания в TikTok, например TikTok Studio написано на нём. Плавность UI показали, но вот как проверить всё это мне на своем устройстве?
Исходный код Lynx закрыт, но обсуждают переход в open-source
Исходный код Lynx закрыт, но обсуждают переход в open-source
👎10👍6
Качественное приложение для расписания ВУЗа (8м)
Разработчик создал качественное Android-приложение для расписания ВУЗов. Он использовал шаблон через GitHub Template, и теперь вы можете легко получить приложение с расписанием для своего ВУЗа (возможно, и школы).
🛒 Скачать приложение
🐱 Шаблон на GitHub
Знаю, что автор подписан на @android_broadcast, поэтому в комментариях можете задавать свои вопросы, а также подписаться на его блог @mxkmn_inc
#android #opensource
Разработчик создал качественное Android-приложение для расписания ВУЗов. Он использовал шаблон через GitHub Template, и теперь вы можете легко получить приложение с расписанием для своего ВУЗа (возможно, и школы).
Знаю, что автор подписан на @android_broadcast, поэтому в комментариях можете задавать свои вопросы, а также подписаться на его блог @mxkmn_inc
#android #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40👎13❤6👏6👍4
VK запустила онлайн-платформу «Секреты цифровой доступности» и поделилась внутренней базой знаний по инклюзии сервисов. На платформе собрано более бесплатных 30 видеоуроков и 20 практических материалов
#vk #accessibility
#vk #accessibility
👎13👍12
Forwarded from Видео в кружок | CIRCLES
This media is not supported in your browser
VIEW IN TELEGRAM
1❤26🎉23👎22👍10🔥1
Рассказ о плагине для Android Studio, который упрощает работу с кастомными дизайн-системами на Jetpack Compose.
Возможности:
👉 Настраиваемые иконки для компонентных функций
👉 Иконки дизайн-системы
👉 Предпросмотр цветов
👉 Интеграция демо-приложения
👉 Рендеринг изображений в KDoc
👉 Шаблоны кода (Live Templates)
#android #androidstudio #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍28👎7🔥2❤1
Формат: Практическая задача на реализацию фичи, многопоточность, корутины, Kotlin Flow, Java/Kotlin + теоретические вопросы, разбор примеров кода
Собеседует Александр Гирев, Senior Android developer в Wildberries. Провел более 150 технических интервью!
Кандидат - Android-разработчик, 5 лет опыта в IT компании.
Доступ только для платных подписчиков на
0:00 Знакомство с собеседующим и формат интервью
7:48 Представление кандидата
8:32 Софтовая часть
17:03 Практическая задача
33:33 Секция многопоточности, основы
38:22 Корутины, ревью кода
54:16 Корутины, теория
1:07:45 Секция Kotlin, ревью кода
1:18:36 Kotlin n Java, теория
1:37:07 Платформенная секция
1:48:17 Вопросы по библиотекам
1:57:06 Вопросы от кандидата
2:03:21 Результат собеседования
2:10:06 Обсуждение собеседования и ответы на вопросы зрителей
#AndroidBroadcast #android #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎57👍30❤3🤯3
Forwarded from Kotlin Multiplatform Broadcast
Поддержите Koin IDE плагин на Product Hunt. Команда проделывают большую работу и точно заслуживает поддержки от сообщества!
#kotlin #koin #ide #androidstudio
#kotlin #koin #ide #androidstudio
👍39👎15
🤖 ServerSocket для IPC в Android и примеры межпроцессного взаимодействия (6 мин)
Разработчик решил разобраться, как организовать общение между браузером и Android-приложением для передачи данных. В поисках удобного решения он обратил внимание на ServerSocket — простой и гибкий способ локального взаимодействия без лишних сложностей. Что из этого вышло, читайте в статье.
Практическое применение статья будет иметь для малого количества разработчиков, но для лучшего понимания Android ОС и работы её принципов однозначно сделает вас сильнее.
#android #подкапотом
Разработчик решил разобраться, как организовать общение между браузером и Android-приложением для передачи данных. В поисках удобного решения он обратил внимание на ServerSocket — простой и гибкий способ локального взаимодействия без лишних сложностей. Что из этого вышло, читайте в статье.
Практическое применение статья будет иметь для малого количества разработчиков, но для лучшего понимания Android ОС и работы её принципов однозначно сделает вас сильнее.
#android #подкапотом
👍20👎12🔥3
Плагин предоставит вам AI-функции для автодополнения, пояснения кода, рефакторинга, генерации сообщений к коммитам и многого другого. Из России и Беларуси сервис работать не будет, но если вы настроите, то сможете использовать и бесплатный Gemini. Скорее всего, он будет лучше интегрирован.
Кроме того, сервис платный, даётся 7 дней пробного периода, что кажется очень мало для полноценной проверки.
#android #androidstudio #jetbrains #ai
Please open Telegram to view this post
VIEW IN TELEGRAM
👎45🔥9👍7🤯1
В Android каждому приложению выделяется ограниченный объем оперативной памяти и это может стать неожиданной проблемой для разработчиков. Разберём, какие лимиты существуют и как на них можно повлиять.
Какие есть лимиты?
1. Heap Size (размер кучи) для кода, исполняющегося в JVM
- Android ограничивает объём памяти, доступный одному процессу (приложение может иметь их несколько).
- Лимит зависит от устройства: размера его оперативной памяти, разрешения и размера экрана, версии ОС и прочих характеристик.
- Узнать доступный объём можно так:
val maxMemoryMb = Runtime.getRuntime().maxMemory() / (1024 * 1024)
Log.d("MemoryInfo", "Max heap size: ${maxMemory}MB")
2. Large Heap Mode
- Можно попросить систему выделить больше памяти через задание в в AndroidManifest
android:largeHeap="true", но увеличение не гарантируется. Узнать доступный размер можно так:val activityManager = getSystemService<ActivityManager>()
val largeMemoryClass = activityManager.largeMemoryClass
Log.d("MemoryInfo", "Large Heap: ${largeMemoryClass}MB")
Для Pixel 9 Pro XL с 16 Гб оперативной памяти стандартный лимит - 512 Мб, а c флагом large heap - 1 Гб. Google Play никак не ограничивает вас в выставлении этого флага и сможете смело опубликоваться, но использовать опцию без явной причины не стоит!
Как можно использовать больше памяти?
✅ Запуск нескольких процессов
Каждый процесс имеет свой heap limit. Можно вынести часть логики в сервис с
android:process=":extra_process". Каждый Android компонент связан с определённым процессом и динамически из кода создать/задать не получится.✅ NDK (Native Code, C++)
Обход heap-лимитов возможен через выделение памяти в C++:
void* bigMemory = malloc(500 * 1024 * 1024); // 500MB
Но при этом важен контроль утечек памяти.
✅ Перенос части нагрузки на видеопамять
Можно использовать GPU для хранения и обработки данных, например:
- Текстуры и буферы в OpenGL/Vulkan
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW);
- Аппаратное декодирование видео через MediaCodec
val decoder = MediaCodec.createDecoderByType("video/avc")- Использование Hardware Bitmaps для рендеринга изображений
val options = BitmapFactory.Options().apply { inPreferredConfig = Bitmap.Config.HARDWARE }
val bitmap = BitmapFactory.decodeResource(resources, R.drawable.image, options)❌ Злоупотребление Large Heap
Запрос большого heap-а не даёт гарантий – Android всё равно ограничит память при нехватке ресурсов. Некоторые производители вовсе игнорируют этот флаг из манифеста
#android #подкапотом
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍69❤5👎3💯2
🚀 Вышел Jetpack WindowManager 1.4 - библиотека с API для построения адаптивного UI в Material3 (можно применить и к другим UI Kit): WindowSizeClass, Activity embedding, WindowsInfoTracker и др.
Про изменения отдельными постами дальше
#jetpack #ui #material
Про изменения отдельными постами дальше
#jetpack #ui #material
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👎3
Сделали рефакторинг API, чтобы оно позволило добавлять собственные значения в будущем (помимо NORMAL, LARGE, EXPANDED), а также отказались от WindowWidthSizeClass и WindowHeightSizeClass.
// Было. Теперь deprecated
val sizeClass = WindowSizeClass.compute(widthDp, heightDp)
when (sizeClass.widthSizeClass) {
COMPACT -> doCompact()
MEDIUM -> doMedium()
EXPANDED -> doExpanded()
else -> doDefault()
}
// Стало в 1.4
val sizeClass = WindowSizeClass.BREAKPOINTS_V1
.computeWindowSizeClass(widthDp, heightDp)
// Проверяем от самого большого размера к наименьшему
when {
sizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_EXPANDED_LOWER_BOUND) -> {
doExpanded()
}
sizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
doMedium()
}
else -> {
// Ветка по умолчанию должна быть для
// самого маленького поддерживаемого UI
doCompact()
}
}
#jetpack #material #adaptive #ui
Please open Telegram to view this post
VIEW IN TELEGRAM
👎10👍9😢2
👉 Изменение размера панелей теперь поддерживается из коробки
val splitAttributesBuilder: SplitAttributes.Builder = SplitAttributes.Builder()
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)
if (WindowSdkExtensions.getInstance().extensionVersion >= 6) {
splitAttributesBuilder.setDividerAttributes(
DividerAttributes.DraggableDividerAttributes.Builder()
.setColor(getColor(context, R.color.divider_color))
.setWidthDp(4)
.setDragRange(
DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
.build()
)
}
val splitAttributes: SplitAttributes = splitAttributesBuilder.build()
👉 Управление затемнением интерфейса под диалогом диалога
👉 Возможность закрепить Activity Task (набор Activity) по id в части экрана
fun pinActivityStackExample(taskId: Int) {
val splitAttributes: SplitAttributes = SplitAttributes.Builder()
.setSplitType(SplitAttributes.SplitType.ratio(0.66f))
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)
.build()
val pinSplitRule = SplitPinRule.Builder()
.setDefaultSplitAttributes(splitAttributes)
.build()
SplitController.getInstance(applicationContext)
.pinTopActivityStack(taskId, pinSplitRule)
}#jetpack #ui #material #activity
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👎7
This media is not supported in your browser
VIEW IN TELEGRAM
Пример изменения размера панелей с помощью нового API из Jetpack WindowManager 1.4
1🔥33👍5👎4
Добавили возможность получения больше о физическом состоянии складного устройства. Новое API WindowInfoTracker.supportedPostures позволит понять поддерживает ли устройство режим tabletop (устройство частично сложено, складной экран разделён на 2 зоны)
val currentSdkVersion = WindowSdkExtensions.getInstance().extensionVersion
val message =
if (currentSdkVersion >= 6) {
val supportedPostures = WindowInfoTracker.getOrCreate(LocalContext.current).supportedPostures
buildString {
append(supportedPostures.isNotEmpty())
if (supportedPostures.isNotEmpty()) {
append(" ")
append(
supportedPostures.joinToString(
separator = ",", prefix = "(", postfix = ")"))
}
}
} else {
"N/A (WindowSDK version 6 is needed, current version is $currentSdkVersion)"
}
#jetpack #android #foldable
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎5😢1
Сравнение Dagger 2, Dagger Hilt и Koin (4м)
Быстрый рассказ про популярные DI для Android. Полезно тем, кто выбирает свой первый DI или сомневается в выборе
#android #di
Быстрый рассказ про популярные DI для Android. Полезно тем, кто выбирает свой первый DI или сомневается в выборе
#android #di
👍52👎12🎉3
Media is too big
VIEW IN TELEGRAM
Обзор библиотеки Kotlin Inject - DI для KMP, API которого аналогично Dagger. В видео происходит демонстрация возможностей, сравнение с другими DI и личное мнение о том стоит ли использовать эту библиотеку в проде.
#видео #kmp #di
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍32👎9
В рамках Game Developer Conference Google объявила что все чипы, которые будут выходить с Android 17+ (выйдет летом 2026 года) как первый релиз будут обязаны поддерживать Vulkan API 1.4.
Вендоры при выпуске устройств с Android 17+ (не обновления) должны будут поддерживать ANGLE
ANGLE (Almost Native Graphics Layer Engine) — это реализация OpenGL ES поверх Vulkan или Direct3D, используемая в Android для запуска приложения без поддержки Vulkan
#android #android17
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35🔥11👎5
Google добавила поддержку мультимодального Gemini в Android Studio. Теперь можно загрузить мокап или диаграмму и получить код. Источник - @MishaalAndroidNews
#androidstudio #ai #gemini
#androidstudio #ai #gemini
👍19👎9
👉 финальное API и изменений не будет
👉 поведение ОС, влияющие на приложения, не будет меняться
👉 можно публиковать приложения в Google Play c поддержкой найсвежайшего Android (указать targetSdk)
#android16 #googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24👎5🎉2