Современное Android-приложение на Jetpack Compose в стиле Material Design 3 (Material You), позволяющее создавать красивые, динамически обновляемые и идеально подогнанные по размерам виджеты рабочего стола из любой ссылки на изображение.
На рабочем столе Android виджеты привязаны к сетке рабочего стола лаунчера (2x2, 3x2, 4x2, 4x4). В FlameWidget реализована плавная и качественная обработка пропорций:
-
Режимы масштабирования (Scale Modes):
По размеру (Fit): Сохраняет оригинальные пропорции изображения (например, 1:1), центрирует без растяжения и обрезки.Размытый фон (Ambient Blur): Если поставить квадратную картинку в широкий виджет4x2, по центру отображается четкое изображение, а по бокам — стильное мягкое размытие в цвет самого изображения.Заполнение (Crop): Заполняет виджет целиком до краев с красивым скруглением.Растянуть (FitXY): Растягивает на всю площадь ячейки.
-
Прозрачная подложка по умолчанию:
- Фон виджета прозрачный, благодаря чему изображение органично смотрится на любых обоях без лишних рамок. Также доступны темы фона MD3, AMOLED и светлая.
-
Адаптивные скругления (MD3 / Android 12+):
- На Android 12+ (API 31+) виджет автоматически использует системный радиус скругления домашнего экрана.
- Настраиваемый ползунок радиуса: от
0до36 dp(по умолчанию24 dpв стиле Material 3).
-
Настраиваемый внутренний отступ (Padding):
- Регулировка от
0до20 dp, чтобы изображение не прилипало вплотную к краям сетки лаунчера.
- Регулировка от
-
Интерактивное изменение размера на рабочем столе:
- Поддержка
resizeMode="horizontal|vertical". - Зажмите виджет пальцем на 1 секунду — появятся маркеры изменения размера, потяните их в любую сторону. Виджет мгновенно перерисуется в высоком качестве с антиалиасингом (
BitmapProcessor).
- Поддержка
- 🎨 Material Design 3: Динамические цвета (Dynamic Color / Material You), адаптация под темную и светлую тему, выразительные карточки и плавная типографика.
- 👁 Живой предпросмотр (Live Preview): В реальном времени показывает, как будет выглядеть виджет в разных пропорциях сетки (
2x2,4x2,3x2,4x4) на фоне обоев. - 📌 Добавление в 1 клик: Кнопка «Добавить на рабочий стол» прямо из приложения через
AppWidgetManager.requestPinAppWidget. - 🔄 Автообновление и WorkManager:
- Настраиваемый период автообновления в фоне (каждые 15 мин, 30 мин, 1 час, 3 часа, 12 часов или раз в день).
- Работает после перезагрузки телефона благодаря
BootReceiver. - Автоматический обход кэша (
_ts=timestamp), чтобы всегда отображалась актуальная картинка.
- ⚡ Мгновенное обновление по нажатию:
- Кнопка перезагрузки прямо в углу виджета на рабочем столе.
- Нажатие на виджет: обновление, открытие редактора, открытие ссылки в браузере или полноэкранный просмотр.
- 📝 Редактирование созданных виджетов:
- Любой существующий виджет можно изменить в любой момент (поменять ссылку, отступы, скругление или режим фона).
- Язык: Kotlin 1.9.22
- UI: Jetpack Compose + Material 3 (BOM 2024.02.01)
- Виджеты: AppWidgetProvider + RemoteViews + Bitmap Canvas Rendering
- Фоновая работа: AndroidX WorkManager (PeriodicWorkRequest)
- Загрузка и кэширование: OkHttp3 + Coil Compose
- Архитектура: MVVM, StateFlow, Coroutines
- Оптимизация: R8 / ProGuard Full Mode (размер release APK всего ~1.6 МБ)
- Запустите Android Studio.
- Выберите File -> Open... и откройте папку проекта.
- Дождитесь автоматической синхронизации Gradle.
- Нажмите Run (Shift + F10).
# Сборка оптимизированного релизного APK
.\gradlew.bat assembleReleaseГотовый установочный APK появится по пути:
app/build/outputs/apk/release/app-release.apk
Создано для https://t.me/flameintgbot