Skip to content

Android приложение: поиск музыки, плейлисты, медиатека, плеер, чат, погода, кино. Jetpack Compose + Fragments + Activities. Кастомная навигация, нижняя навигация, кастомный тулбар, анимации.

Notifications You must be signed in to change notification settings

amanzhola/playList_Maker

Repository files navigation

Android Kotlin Compose Firebase

🎧 📱 PlayList Maker — мультимедиа приложение

Цвет интерфейса: мягкий синий (#4F8DF7) · Стиль баннера: 2 (светлый)

РусскийEnglish


Описание (RU)

Android-приложение с 6 экранами: поиск музыки, медиатека (2 таба: избранное и плейлисты/альбомы), аудиоплеер, кино, погода, чат.

  • UI/Архитектура:
    • Jetpack Compose — экраны: Поиск музыки, Медиатека (2 таба), Настройки.
    • Fragments / Activities — для учебных целей и демонстрации многослойной навигации.
  • Навигация: кнопочная кастом-навигация + нижняя навигация, кастомный тулбар-«цветок» с actions.
  • Музыка: поиск треков; если есть видео — встроенное проигрывание; в ландшафте — полноэкранный режим. Шаринг: один трек из плеера или список треков из истории с экрана поиска.
  • Медиатека: ❤️ Избранное и 📝 Плейлисты/Альбомы; шаринг альбомов/плейлистов.
  • Кино (Activity): 3 режима просмотра — постер / список / детали (фрагменты с 2 табами); собственная нижняя навигация; перевод названий Ru→En; шаринг фильма.
  • Погода (Activity): Foreca API; при недоступности данных — фолбэк на открытые источники (аэропорты мира).
  • Чат (Fragment): Firebase (auth + database), личные сообщения и отправка картинок.
  • UI/UX: кастомные анимации, темы, выбор цветов (иконки, текст, заглавие, фон), оффлайн-уведомления, мультиязычность.

Гибридный стек: Jetpack Compose + Fragments/Activities + многоэкранная навигация + кастомные анимации + работа с API + Firebase.


🏠 Экран "кнопочный рай"

left

Кнопочный экран

• 6 кнопок (3+3)
• Переключение по заголовку
• Тулбар + Dropdown
• EN: Фильтр и Dropdown ➕ добавлены 🙂 эмодзи для интуитивности 🌼
• RU: Фильтр и Dropdown «Ромашка» 🌼
• Без back stack, 6 анимаций
• На экране кнопок без нижней навигации 😕 (т.к. нижняя навигация его альтернатива).

right-1 right-2
shot-1 shot-2 shot-3 shot-4

🔽 🚗 Нижний навигатор

left left left

Нижняя навигация

• Отображается на 6 внутренних экранах.
• Каждый экран — 3 кнопки навигации.
• Синий цвет — активный экран, нажатие на него открывает вторую тройку кнопок.

right-1 right-1

• Переходы прямые, без stack, и с кастомной анимацией.
• Нажатие "заглавия" в тулбаре возвращает на первый набор по 3 кнопки из главного меню.


🔍 Экран Поиска музыки

left left

Поиск музыки

• Хранит историю последних **10 треков** ➕ обновление на верхнюю строку в истории
• При переходе на трек — по умолчанию **горизонтальный скрол** всех треков из результата поиска.

right-1 right-2 right-2

• При клике на трек — переключение на вертикальный скрол
• Горизонтальный и вертикальные скролы реализованы на базе RecyclerView ➕ альтернатива на базе ViewPager2 в экране Кино

shot-1 shot-2 shot-3 shot-3 shot-4
left left

• Удаление треков из истории и списка — по **нажатию на стрелку**
• Варианты отображения:
- Верхний тулбар (всегда)

right-1 right-2 right-2
  • Нижний навигатор (список пуст, динамика)
  • Альтернативное исполнение: Автоматическая прозрачность на экране "Кино" при не пустом списке
left left left

• Переход на **экран AudioPlayer**
- Расширенные опции: смена темы, поделиться треком (в просмотре отдельного экрана) или треками(с экрана поиска-всеми треками из истории)
- При отправке трек оформление с именем исполнителя и названием трека(ов)

right-1 right-2
  • Поддержка переключения темы, шаринга 🎵 трека или 🎶 треков, смены цветов текста, кнопок и фона, все функции настроек с 🌼 тулбара
  • При импорте 🎵 трека или 🎶 треков поддерживается как вертикальный так и горизонтальный скролл
left

- Включении трека работает 🕒 трека и кнопки play, pause, favorite, share
- Просмотр отдельного трека, реализация ландскейпа, поддержка размеров на sw320dp, sw360dp, sw393dp

right-1 right-2 right-2
  • При отправке трек оформление с именем исполнителя и названием трека(ов)
  • В экране поиска длина названия или исполнителя трека ограничена в одну строку, тогда как при отдельном просмотре нет ограничений, доп. в ландскейпе скрол для теста
shot-1 shot-2 shot-3
left

- DropDown 🌼 тулбара в виде вложенных кругов вращаются относительно центрального круга для расширения списка
- Переворот списка поиска (reverse scroll) — по фильтру тулбара, оповещение статуса связи

- Альтернативное бесплатная авто-поиск видео режима песен с тулбара + при отсутствии видео полное звуковая поддержка, при видео авто полно-экранное на ландскейпе, time bar для прокрутки назад-вперед

right-1

❤️ Медиатека 📝

left-1
left-2

❤️ Избранное
• Добавление треков в избранное
• Просмотр списка любимых композиций
• Локальное хранение избранных треков
• Управление цветами

right-1 right-1

📝 Создание плейлистов
• Создание пользовательских плейлистов
• Добавление обложки, названия и описания

shot-1 shot-2 shot-3 shot-3 shot-3

• Добавление треков в плейлисты
• Управление плейлистами (редактирование, удаление)
• Импорт-экспорт плейлистами

shot-1 shot-2 shot-3 shot-3 shot-3
shot-1 shot-2 shot-3
shot-1 shot-2 shot-3 shot-3 shot-3
shot-1 shot-2 shot-3 shot-3 shot-3

⚙️ Экран Настроек

shot-1

- Смена темы (глобально или через тулбар)
- Соглашение 📝, поддержка 🐶, поделиться 💌 — доступны через тулбар (`BaseActivity`)

shot-2 shot-3
shot-1 shot-2 shot-3 shot-3

🎞️ Экран Кино

shot-1 shot-2 shot-3 shot-3 shot-3
  • Поиск фильмов:
    • Кнопка старта как альтернатива экрану поиска песен.
    • Автостарт реализован (и закомментирован в коде).
  • Результаты поиска при переходе на трек:
    • ViewPager2 с горизонтальным скролом (по умолчанию).
    • Переключение на вертикальный скрол — по кнопке.
  • Верхний тулбар и нижний навигатор доступны.
  • Деление фильмов на избранные (❤️).
  • При поиске объединяются и выдаются результаты двух режимов поиска:
    • Обычный — имена актёров.
    • Расширенный — краткое описание фильма.
  • При отдельном просмотре фильма как альтернатива экрану поиска песен — без тулбара и нижнего навигатора.
  • Переворот списка (reverse scroll) — по фильтру.
  • ✨📽️💃 Шаринг кинофильма при просмотре в режиме просмотра постера фильма
  • Получение кинофильма и распознавание если она в вашем списке избранных
  • Переход на фрагменты, где имеется детали фильма, список и имена звезд и их фотографии
shot-1 shot-2 shot-3 shot-3 shot-3
shot-1 shot-2 shot-3 shot-3 shot-3
shot-1 shot-2 shot-3 shot-3 shot-3
shot-1 shot-2 shot-3 shot-3
  • Ru версия, с определением языка из поля ввода поиска
  • Перевод названия фильма Ru->En альтернативно из ресурсов Википедия, тексты качества "прямого" перевода и все же "лучше чем ничего"
shot-1 shot-2 shot-3 shot-3

🌦️ Экран Погоды

shot-1 shot-2 shot-3 shot-3
  • Получение данных с Foreca API.
  • В связи с ограничением бесплатного пользования в 30 дней дополнено в случае отсуствия информации поиcк через бесплатные сервисы аэропортов мира
  • После ввода названия доп запрашивается код страны для нахождения определением через долготу и ширину
  • Верхний тулбар и нижний навигатор доступны.
  • Переключение темы и поддержка всех стандартных функций тулбара.
shot-1 shot-2 shot-3 shot-3

💠 Экран Чата

shot-3 Chat(unreadCount) chat(horizontal)
  • Используется:
  • Реализован на базе FireBase (личка, позже + групповой чат)
  • Отображает тулбар и доступ к теме, делиться и другим действиям.
  • экран регистрация пользователей (профиль)
  • экран списка контактов
  • экран обмена текстовыми сообщениями и картинками
shot-1 shot-2 shot-3 shot-3 shot-3
shot-1 shot-2 shot-3 shot-3 shot-3

🛠️ Технические особенности

  • Кастомные анимации переходов между экранами (6 видов).
  • Реализация Dropdown через вложенные вращающие круги.
  • Переключение языка и видимости UI в зависимости от локали.
  • Прямые переходы (без стека), максимально быстрый отклик и удаление блуждания при длинных переходах.
  • Удобный тулбар через BaseActivity.
  • В каждом экране реализовано сообщение на отсутсвии интернета экран очищается для показа ошибки на 3 секунды и затем все обратно

✌️ Стек технологий

* Kotlin * Android SDK * ViewModel + LiveData * Coroutines * Retrofit * Koin (DI) * ViewPager2 * RecyclerView * SharedPreferences

🚀 Будущие доработки

  • Расширение возможностей экрана ExtraOption (сделано)
  • Оптимизация истории поиска треков и фильмов. (сделано)
  • Поддержка более длительного токена погоды. (сделано)
  • Возможность синхронизации истории с облаком. (сделано)

⚙️ Установка и запуск

  1. Клонировать репозиторий: git clone https://github.com/amanzhola/playList_Maker
  2. Открыть проект в Android Studio
  3. Собрать и запустить на эмуляторе или устройстве

🧑‍💻 Автор / Команда

Имя: Аманжол Аимов Почта: [email protected]
GitHub: github.com/amanzhola



Overview (EN)

PlayList Maker is a multifunctional Android multimedia application with 6 main screens:
Music Search, Media Library, Audio Player, Movies, Weather and Chat.

The project is intentionally built using different UI and navigation approaches:

Feature Implementation
Music Search, Media Library, Settings Jetpack Compose UI
Chat (private messaging, Firebase) Fragments + ViewModel
Movie Screen (poster preview, lists, details) Activity + Fragments + ViewPager2
Weather Screen (API + fallback sources) Activity + ViewModel

This structure demonstrates:

  • Compose + Fragment hybrid architecture
  • Shared ViewModels and state handling
  • Multi-screen navigation without back stack confusion
  • Custom toolbars and animated transitions
  • Local + Remote data handling (API + Firebase)

Tech Stack

  • Kotlin
  • Jetpack Compose
  • MVVM + ViewModel
  • Coroutines
  • Retrofit
  • Firebase (Auth, Realtime DB)
  • Coil
  • RecyclerView / ViewPager2

About

Android приложение: поиск музыки, плейлисты, медиатека, плеер, чат, погода, кино. Jetpack Compose + Fragments + Activities. Кастомная навигация, нижняя навигация, кастомный тулбар, анимации.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages