Giter VIP home page Giter VIP logo

rsshool2021-android-task-pomodoro's Introduction

RSShool2021-Android-task-Pomodoro

Rolling Scopes School - Android 2021 - Stage 1 - Task 3 - Pomodoro

👋 Привет всем!

Практически каждый из нас сталкивался с "нехваткой времени" ⏰ - магическим образом происходит так, что мы начинаем по-настоящему работать тогда, когда уже невозможно игнорировать дедлайны.

It's fine 🐶🔥. Но хорошая новость в том, что есть множество техник, которые помогают реорганизовать время и способ ведения дел. Как итог мы успеваем гораздо больше. Pomodoro technique из этой серии.

В этом задании мы создадим простое приложение - Pomodoro Timer 🍅. Из тех-стека используем RecyclerView, Custom View, Service, Notification...

Результат должен получиться примерно такой:

См. видео на youtube

Описание задания

Один экран. На экране список RecyclerView и форма для создания таймера. Элемент списка - созданный таймер:

Pomodoro screen

Состав элемента списка слева-направо:

  1. мигающий индикатор (чуть анимации в наш проект) - видим только тогда, когда таймер включен.
  2. таймер обратного отсчёта типа hh:mm:ss
  3. Custom view. Представляет из себя своеобразный Progress bar - постепенно рисуется круг. View визуально отображает ход таймера. Скажем, для таймера на 10 минут, если таймер еще не запускался - View пустая. Если таймер отсчитал 5 минут - View наполовину нарисована. Когда прошло 10 минут - View нарисована полностью. Шаг - секунда или меньше. В своей реализации необязательно использовать круг, можно сделать линейный Progress bar или ещё какой-то. Главное требование - это должно быть Custom View и каким-либо образом визуализировать время таймера.
  4. кнопка Start/Stop - запуск или остановка таймера. Start - запускает данный таймер и при этом останавливает любой другой запущенный таймер. Т.е. одновременно может работать только один таймер в списке. "Запуск таймера" означает начало обратного отсчёта таймера, начало мигания индикатора и начало рисования Custom View. После старта таймера кнопка меняет текст на Stop. Нажатие на Stop отстанавливает таймер (время сохраняется), мигающий индикатор и рисование Custom View
  5. кнопка Delete - удаляет данный таймер из списка.

Это обязательный состав элемента списка для данного задания. Но вы вольны добавить что-то ещё, например, добавить кнопку сброса времени таймера, использовать красивый дизайн и т.д., но всё в разумных рамках ☝️

Форма для создания таймера находится под списком и включает:

  1. поле, или какой-либо picker, для задания количества минут (+ на ваше усмотрение, то же для секунд).
  2. кнопка Add Timer - добавляет таймер в список. После добавления таймер не активируется.

Таймер, который завершил свою работу, должен как-то сигнализировать об этом пользователю. Давайте для простоты будем использовать хотя бы один из трех вариатов:

  1. звуковой сигнал
  2. изменение цвета элемента списка
  3. Toast

Если в данный момент есть запущенный таймер и приложение сворачивается или стартует другое приложение - т.е. Pomodoro Timer App уходит в background, то запускается Foreground Service, который выводит Notification c текущим значением таймера. Значение времени на нотификации продолжает отсчитываться.

Pomodoro screen

Если вам показалось, что задание слишком сложное для вашего уровня - не переживайте! Будет три примера исходниками - создание RecyclerView с таймером, создание Custom View и создание Foreground Service c Notification. Останется объединить все это в одном проекте:

  1. Пример Recycler View - смотри тут
  2. Пример Custom View - смотри тут
  3. Пример Foreground Service - смотри тут

Cross-checking

  • Изучите требования к cross-check
  • Форму для оценки задания по критериям ищите здесь ⚡️

Успехов! 🤞

rsshool2021-android-task-pomodoro's People

Contributors

ziginsider avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.