- Замена домашнего экрана - приложение становится основным лаунчером устройства
- Меню приложений - отображение всех установленных приложений в виде списка и сетки
- Запуск приложений - быстрый запуск любого установленного приложения
- Скрытие приложений - выбранные приложения не отображаются в меню и на рабочем столе
- Массовый выбор - можно выбрать несколько приложений одновременно
- Постоянное хранение - информация о скрытых приложениях сохраняется в локальной базе данных
- Быстрое восстановление - можно легко вернуть скрытые приложения
- Автоматическая блокировка - при скрытии приложений автоматически блокируется сенсор
- Фоновый сервис - блокировка работает независимо от приложения
- Оверлей - создается прозрачный слой поверх всего экрана
- Разблокировка по клавише - экран разблокируется только при нажатии настроенной клавиши
- Выбор клавиши - можно настроить любую клавишу громкости для управления
- Переключение режимов - одна клавиша для скрытия/показа приложений
- Визуальная настройка - простой интерфейс для изменения клавиши
- Сохранение настроек - выбранная клавиша сохраняется в настройках
- Стандартные иконки - используются системные иконки приложений
- Подготовка к расширению - архитектура готова для поддержки сторонних icon packs
- Интерфейс выбора - готовый UI для выбора набора иконок
- Быстрый поиск - поиск по названию и имени пакета
- Фильтрация в реальном времени - результаты обновляются при вводе
- Удобный интерфейс - поле поиска всегда доступно
- Material Design - соответствие гайдлайнам Google
- Темная тема - приятная для глаз темная цветовая схема
- Кастомная палитра - #212121, #FFC700, #FFFFFF как указано в ТЗ
- Плавные анимации - современные переходы между экранами
MVVM (Model-View-ViewModel)
├── Model: Room Database + Repository
├── View: Activities + XML Layouts
└── ViewModel: LiveData + Coroutines
- Главный экран лаунчера
- Сетка приложений (GridLayout, 4 колонки)
- Док с кнопкой открытия меню приложений
- Обработка нажатий физических клавиш
- Список всех приложений
- Выбор приложений (клик = выбрать, долгий клик = запустить)
- Поиск по приложениям
- Массовые операции (скрыть/показать выбранные)
- Настройка клавиши переключения
- Выбор набора иконок
- Просмотр текущего статуса системы
- Запрос необходимых разрешений
- Фоновый сервис блокировки экрана
- Создание оверлея через WindowManager
- Перехват всех touch событий
- Управление через Intent (start/stop)
- Получение списка установленных приложений через PackageManager
- Фильтрация лаунчер-приложений (ACTION_MAIN + CATEGORY_LAUNCHER)
- CRUD операции с скрытыми приложениями
- Запуск приложений через Intent
@Entity HiddenApp {
packageName: String (PRIMARY KEY)
}- Получение списка всех установленных приложений
- Требуется для отображения полного списка
- Отображение поверх других приложений
- Критично для функции блокировки экрана
- Требует ручного разрешения пользователя
- Управление системной панелью
- Дополнительная функциональность
- Язык: Kotlin 1.9.0
- Min SDK: 26 (Android 8.0 Oreo)
- Target SDK: 34 (Android 14)
- UI Framework: Material Components 1.11.0
- База данных: Room 2.6.1
- Async: Coroutines 1.7.3 + LiveData
- Build System: Gradle 8.0
background_dark: #212121 // Основной фон
accent_yellow: #FFC700 // Акцентный цвет (кнопки, активные элементы)
text_white: #FFFFFF // Основной текст
text_gray: #B0B0B0 // Второстепенный текст
item_background: #2A2A2A // Фон элементов списка- Заголовки: Bold, 16-18sp
- Основной текст: Regular, 14-16sp
- Второстепенный текст: Regular, 12-14sp
- Кнопки: Bold, 14-16sp
- RecyclerView с GridLayoutManager (4 столбца)
- Док внизу с кнопкой меню приложений
- Индикатор свайпа для меню
- Вкладки: ПРИЛОЖЕНИЯ | НАСТРОЙКА
- Панель управления: ВЫБРАТЬ ВСЕ + ПОИСК
- RecyclerView с LinearLayoutManager
- Желтая кнопка действия внизу
- Card View компоненты
- Группировка по категориям
- Информационные блоки
- Кнопки действий
- Клик на приложение - выбор/запуск (зависит от экрана)
- Долгий клик - альтернативное действие
- Свайп вверх - открытие меню (на главном экране)
- Ripple effect на всех кликабельных элементах
- Toast уведомления для действий
- Визуальная индикация выбора (opacity change)
- Alert диалоги для важных операций
- SYSTEM_ALERT_WINDOW
- Статус: Опасное (требует ручного разрешения)
- Использование: Блокировка экрана
- Проверка: Settings.canDrawOverlays()
// Проверка при запуске
if (!Settings.canDrawOverlays(context)) {
// Показать диалог с объяснением
// Перенаправить в настройки
Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)
}- LazyLoading - приложения загружаются асинхронно
- Caching - иконки кешируются в памяти
- Background threads - все IO операции в Coroutines
- DiffUtil - эффективные обновления RecyclerView
- ViewBinding - быстрый доступ к View без findViewById
- Singleton Application instance
- Room database with lazy initialization
- Lifecycle-aware components
- Proper cleanup in onDestroy
- ✅ Android 8.0 (API 26) - Минимальная
- ✅ Android 9.0 (API 28)
- ✅ Android 10 (API 29)
- ✅ Android 11 (API 30)
- ✅ Android 12 (API 31)
- ✅ Android 13 (API 33)
- ✅ Android 14 (API 34) - Целевая
- Работает на всех форм-факторах (phone, tablet)
- Поддержка различных разрешений экрана
- Адаптация под различные производители
- Тестирование на разных прошивках
- Виджеты на главном экране
- Папки для группировки приложений
- Резервное копирование настроек
- Поддержка сторонних icon packs
- Дополнительные жесты управления
- Темы оформления (светлая/темная/кастомная)
- Ландшафтная ориентация
- Настраиваемая сетка приложений
- Автоматические действия по расписанию
- Защита паролем/отпечатком
- AI-рекомендации приложений
- Интеграция с Google Assistant
- Синхронизация между устройствами
- Плагины и расширения
- Marketplace тем и иконок
- APK (Debug): ~5-7 MB
- APK (Release, минифицированный): ~3-5 MB
- AAB: ~2-4 MB
- Запуск приложения: <500ms
- Загрузка списка приложений: <1s
- Переключение режимов: <100ms
- Память (RAM): ~50-80 MB
Пользователь хочет скрыть личные приложения от посторонних глаз:
- Открывает список приложений
- Выбирает нужные приложения
- Нажимает "СКРЫТЬ ВЫБРАННЫЕ"
- При необходимости доступа - нажимает настроенную клавишу
Пользователь хочет заблокировать экран в общественном месте:
- Нажимает Volume Down (или настроенную клавишу)
- Экран блокируется, приложения скрываются
- Телефон выглядит как обычный лаунчер
- Повторное нажатие клавиши разблокирует
Родитель ограничивает доступ ребенка к определенным приложениям:
- Скрывает нежелательные приложения
- Настраивает сложную комбинацию клавиш
- Ребенок видит только разрешенные приложения
Пользователь хочет видеть только часто используемые приложения:
- Скрывает редко используемые приложения
- Оставляет на главном экране только важные
- Чистый и минималистичный интерфейс