Как Android-разработчик тайм-менеджментом увлёкся, и что и из этого вышло

Привет, Хабр. Хочу вам признаться. Я — Лентяй. Эта тёмная тайна, тщательно скрывается от окружающих. Поэтому, чур никому ни слова.
Чтобы никто из окружающих не догадался про это, приходится постоянно работать. Но частенько во время работы, отвлекаюсь на всякие посторонние вещи. Новости почитать, посмотреть почту, историю сообщений. В результате, отвлекающие занятия, занимают слишком много времени, и страдает имидж. Иногда, я близок к разоблачению.
Но однажды я нашел методику управления своим рабочим временем, под названием «Pomodoro». И написал приложение «Таймер Трудового Человека». Потому, что я — Android-Разработчик!
5a4ba2c0ab3740849918e3a0cbe7cd71.jpg

Итак, ниже под катом я расскажу о творческих метаниях, головоломаниях, и прочих сопуствующих творческому процессу прелестях.

Часть первая (задумчивая)


Вкратце о системе «Pomodoro». Всё наше рабочее время разделим на определенные отрезки работы и отдыха, называемые «Помидор» (название пошло от формы кухонного таймера, которым пользовался изобретатель метода Франческо Чирилло). Общепринято соотношение 25 минут на работу и 5 на отдых.
Основная идея заключается в том, что рабочее время (25 минут) вы работаете/учитесь по-настоящему, не отвлекаясь ни на что (вот совсем-совсем ни на что). Затем вы 5 минут делаете что хотите (в рамках УК и общественной морали).
Перед началом работы, вы составляете список сколько «помидоров» вы хотите потратить на каждую задачу. Например: подготовка к экзамену — 3 штуки, изучение нового материала — 4 и т.д.
По своему опыту, могу сказать, что эта методика очень эффективная (естественно, что не стал бы я советовать, не испытав на себе).
Изобретатель методики использовал кухонный таймер в виде помидора, откуда собственно и пошло название. Но использовать его в офисе, и пугать коллег странным тиканьем и неожиданными звоночками — не комильфо. Поэтому раньше я использовал секундомер на телефоне, и блокнот. Но это тоже оказалось не удобно.

В Android Market, очень много таймеров работающих по помидорной технике. Мне же хотелось чего-то своего, теплого, и лампового, без дополнительных функций (по выражению моего бывшего начальника — «Свистелки, перделки и фантики»), без рекламы и прочих сомнительных прелестей. Плюс, я сам хотел настраивать свои собственные временные промежутки.

Да и что уж там, я хотел написать своё собственное приложение, как у взрослых.

Часть вторая (экспериментальная)


Первая версия выглядела просто и примитивно. Таймер, кнопка, меню настройки. Начальное состояние:
daea6e9caef642729d1b020f04a8ad86.jpg

В процессе работы:
1d67cb5a8068482a996e220ed6391297.jpg

В меню настройки можно выбрать цвета шкалы, и продолжительность этапов работы/отдыха.
9f238407cc4c48f4be49e721680d8a20.jpg

Таймер отрисовывался на Canvas.
Но избавившись от таймера, я не ушел от листочков с расписанием. Поэтому решил сделать полную перестройку.

Часть третья (перестроечная)


Итак, в оригинальной системе тайм-менеджмента «Pomodoro», основная идея состоит в том, что вы заранее планируете сколько времени у вас, уйдет на ту или иную задачу. Поэтому, решил добавить список задач. Но людям уже понравилась возможность работы в режиме «нон-стоп». Поэтому старый функционал должен был выжить. Вот так теперь выглядит сейчас главное меню:
70aca0e99fef466480da7228d5168b0c.jpg

Для тех, же кто хочет работать с обычным таймером, без заморочек с расписанием — я оставил классическую версию, доступную по кнопке «Работать без списка задач» (на начальном экране). Сразу выбираете время работы/отдыха и работаете, как в первой версии.
b45388bb8e404f489131395a0011dfe1.jpg

Также под нож пошла возможность выбирать цвета для шкалы времени. Вместо этого было создано несколько гармоничных цветовых схем, и возможность выбирать одну из них. Со схемами у меня был дикий танец с бубнами, благополучно решенный (об этом смотрите ниже).
ab8f44b2285b40eaa30ed1994e140a12.jpg

Итак, если вы хотите создать новое расписание задач на день, то нажав на кнопку «Создать/загрузить список задач», вы можете распланировать свой рабочий день.
Кнопка «Добавить рабочий цикл»  — добавляет задачу, разбитую на несколько этапов. Причем каждый этап включает в себя время для работы, и небольшого перерыва.
256feaf12adb42b9a676f7d3a83999de.jpg

Через каждые четыре «помидора», рекомендуется устраивать большой перерыв на полчаса-час. Поэтому была добавлена кнопка «Добавить перерыв».
0d41eaf11fd04a96954bdc6d69d7a4da.jpg

Создав свой список задач, вы можете подкорректировать его и сохранить.
fcc5d14500cf40f1b15680d2aa72b70f.jpg

Так вы можете создать себе несколько расписаний, сразу на неделю.
c2d68b3bf0e54b25979200dcaee710a4.jpg

Долгое нажатие на пункт списка позволяет либо отредактировать список заданий, либо начать с ним работать. Рабочий экран выглядит так:
9be37f15f20e4a81b840f9d8bdeb0efc.jpg

Начав работать со списком, вверху вы видите название текущего этапа, его номер и количество этапов на данную задачу. Чуть ниже список всех циклов (в скобках указаны время работы и отдыха). Основное место занимает главный таймер, как из первой версии программы. Если вы справились с задачей досрочно, то можете нажать на кнопку «Завершить задачу досрочно», и тем самым удалить её из списка. В случае, если вы не уложились в расписание, то кнопка «Добавить цикл», добавит еще один цикл в задачу.

Часть четвертая (околотехническая)


Одним из головоломных моментов, для меня, было создать единые цветовые схемы для приложения. Всё хотелось сделать в стиле Material. Но при тестировании на разных устройствах полезли косяки. То, что выглядело прилично на версии Android 5.x, на 4.x версии смотрелось ужасно.

В конце концов я пришел к такому решению. Создал наборы Material-цветов:

Файл colors.xml


    #64B5F6
    #2196F3
    #0D47A1

    #4DB6AC
    #009688
    #004D40

    #8BC34A
    #689F38
    #33691E

    #e57373
    #f44336
    #b71c1c

    #FF5722
    #E64A19
    #BF360C

    #FFD54F
    #FFC107
    #FF6F00

    #FF5722
    #4CAF50
    #E64A19

    #7986CB
    #3F51B5
    #1A237E

    #9E9E9E
    #616161
    #212121

    #ffffff
    #c8ffffff




И файл со стилями:
Файл styles.xml

    

    

    

    

    

    

    

    

    

    

    
    
    
    


    

    

    

    

    

    

    

    



И для каждой схемы пришлось создать свою форму для кнопки. Например для схемы «Индиго»:
Файл button_shape_indigo.xml


    
    
    
    



В фрагменте настроек задавалось имя схемы, и при старте любой активности (в onCreate) отрабатывал такой код:
Функция выбора темы
 public static void  setNewTheme(Context mContext){
        SharedPreferences sp;
        sp = PreferenceManager.getDefaultSharedPreferences(mContext);
        String colorScheme = sp.getString("colorScheme", "blue");
        if(colorScheme.equals("blue"))
            mContext.setTheme(R.style.AppTheme);
        else if (colorScheme.equals("green"))
            mContext.setTheme(R.style.GreenTheme);
        else if (colorScheme.equals("teal"))
            mContext.setTheme(R.style.TealTheme);
        else if (colorScheme.equals("amber"))
            mContext.setTheme(R.style.AmberTheme);
        else if (colorScheme.equals("black"))
            mContext.setTheme(R.style.BlackTheme);
        else if (colorScheme.equals("indigo"))
            mContext.setTheme(R.style.IndigoTheme);
        else if (colorScheme.equals("autumn"))
            mContext.setTheme(R.style.AutumnTheme);
        else if (colorScheme.equals("orange"))
            mContext.setTheme(R.style.OrangeTheme);
        else if (colorScheme.equals("red"))
            mContext.setTheme(R.style.RedTheme);
    }


Часть пятая (околорекламная и немного скандальная)


Приложение изначально писал для себя. И поэтому делать какие-либо вложения в рекламную кампанию, не видел смысла. На всякий случай, перевел приложение на английский. И посидев в векторном редакторе, минут за 15 сваял иконку и главную картинку (та, что вверху поста). Разместил приложение на 4pda. Там в сумме вышло около 150 скачиваний.

Также, я пишу истории из своей жизни на Пикабу. Людям нравится, есть подписчики. Поэтому разместил два поста (о первой и второй версии соотвественно, последовательно по мере выхода версий). Но к сожалению, парочка троллей, решили «пошутить», и натравили модератора с жалобой, что «мол реклама приложения, и запрещено правилами». Модератор не разобравшись тему про первую версию удалил, и влепил бан на две недели. Но, письмо в поддержку, решило данную проблему, и админы разблокировали статью. Правда тролль не успокоился, и требовал «Забаньте его за неграмотный Русский язык и пунктуацию!», но нахватав минусов благополучно слился. Второй пост, про новую версию троллить уже не пытались. В общем, аудитория приняла приложение благосклонно, указали на несколько ошибок (исправлены).

Вот собственно и вся моя история написания приложения. Естественно, приложение доступно бесплатно и без рекламы. Никакой материальной выгоды, кроме морального удовлетворения (и немного, для удовлетворения мании величия), и желания поделиться полезным инструментом с сообществом, автор не получает.
Засим позвольте откланяться. Надеюсь кому-то это окажется полезным. Если у кого-то есть замечания или подсказки, с большим удовольствием их выслушаю.

Комментарии (8)

  • 14 октября 2016 в 13:05

    0

    Спасибо, а какое название у приложения? Можно в личку, если в комментах запрещено правилами =)
    • 14 октября 2016 в 13:19

      0

      «Таймер трудового человека», как на картинке:)
  • 14 октября 2016 в 17:23

    0

    Спасибо за статью. Люблю технику pomodoro и сам пользуюсь 2 мя приложениями на андроид.


    А там есть какие-то сложности с бэкграунд работой и таймерами?
    Надо логику выносить в сервис?

    • 14 октября 2016 в 17:26 (комментарий был изменён)

      0

      Уточните, что вы имеете в виду под логикой в серисе?
      Может ли работать на заднем фоне?

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

      А какими приложениями вы пользуетесь? Что вам не хватает, а что хотелось бы добавить в них?

  • 14 октября 2016 в 18:23

    +2

    Я — Лентяй. Чтобы никто из окружающих не догадался про это, приходится постоянно работать.

    Ничего вы не знаете о лени…

    • 14 октября 2016 в 18:27

      +3

      Я просто Маэстро Лени :) Великий Магистр :)
  • 15 октября 2016 в 00:43

    0

    К сожалению не сделал для айфона, очень хотелось. Не нашёл.
    • 15 октября 2016 в 00:45

      0

      Увы, под iOS, пока не планирую работать.
      Но если руки дойдут, обязательно сделаю приложение.
      Из интереса, посдкажите разве под iOS, нет подобных приложений?

© Habrahabr.ru