Как Android-разработчик тайм-менеджментом увлёкся, и что и из этого вышло
Чтобы никто из окружающих не догадался про это, приходится постоянно работать. Но частенько во время работы, отвлекаюсь на всякие посторонние вещи. Новости почитать, посмотреть почту, историю сообщений. В результате, отвлекающие занятия, занимают слишком много времени, и страдает имидж. Иногда, я близок к разоблачению.
Но однажды я нашел методику управления своим рабочим временем, под названием «Pomodoro». И написал приложение «Таймер Трудового Человека». Потому, что я — Android-Разработчик!
Итак, ниже под катом я расскажу о творческих метаниях, головоломаниях, и прочих сопуствующих творческому процессу прелестях.
Часть первая (задумчивая)
Вкратце о системе «Pomodoro». Всё наше рабочее время разделим на определенные отрезки работы и отдыха, называемые «Помидор» (название пошло от формы кухонного таймера, которым пользовался изобретатель метода Франческо Чирилло). Общепринято соотношение 25 минут на работу и 5 на отдых.
Основная идея заключается в том, что рабочее время (25 минут) вы работаете/учитесь по-настоящему, не отвлекаясь ни на что (вот совсем-совсем ни на что). Затем вы 5 минут делаете что хотите (в рамках УК и общественной морали).
Перед началом работы, вы составляете список сколько «помидоров» вы хотите потратить на каждую задачу. Например: подготовка к экзамену — 3 штуки, изучение нового материала — 4 и т.д.
По своему опыту, могу сказать, что эта методика очень эффективная (естественно, что не стал бы я советовать, не испытав на себе).
Изобретатель методики использовал кухонный таймер в виде помидора, откуда собственно и пошло название. Но использовать его в офисе, и пугать коллег странным тиканьем и неожиданными звоночками — не комильфо. Поэтому раньше я использовал секундомер на телефоне, и блокнот. Но это тоже оказалось не удобно.
В Android Market, очень много таймеров работающих по помидорной технике. Мне же хотелось чего-то своего, теплого, и лампового, без дополнительных функций (по выражению моего бывшего начальника — «Свистелки, перделки и фантики»), без рекламы и прочих сомнительных прелестей. Плюс, я сам хотел настраивать свои собственные временные промежутки.
Да и что уж там, я хотел написать своё собственное приложение, как у взрослых.
Часть вторая (экспериментальная)
Первая версия выглядела просто и примитивно. Таймер, кнопка, меню настройки. Начальное состояние:
В процессе работы:
В меню настройки можно выбрать цвета шкалы, и продолжительность этапов работы/отдыха.
Таймер отрисовывался на Canvas.
Но избавившись от таймера, я не ушел от листочков с расписанием. Поэтому решил сделать полную перестройку.
Часть третья (перестроечная)
Итак, в оригинальной системе тайм-менеджмента «Pomodoro», основная идея состоит в том, что вы заранее планируете сколько времени у вас, уйдет на ту или иную задачу. Поэтому, решил добавить список задач. Но людям уже понравилась возможность работы в режиме «нон-стоп». Поэтому старый функционал должен был выжить. Вот так теперь выглядит сейчас главное меню:
Для тех, же кто хочет работать с обычным таймером, без заморочек с расписанием — я оставил классическую версию, доступную по кнопке «Работать без списка задач» (на начальном экране). Сразу выбираете время работы/отдыха и работаете, как в первой версии.
Также под нож пошла возможность выбирать цвета для шкалы времени. Вместо этого было создано несколько гармоничных цветовых схем, и возможность выбирать одну из них. Со схемами у меня был дикий танец с бубнами, благополучно решенный (об этом смотрите ниже).
Итак, если вы хотите создать новое расписание задач на день, то нажав на кнопку «Создать/загрузить список задач», вы можете распланировать свой рабочий день.
Кнопка «Добавить рабочий цикл» — добавляет задачу, разбитую на несколько этапов. Причем каждый этап включает в себя время для работы, и небольшого перерыва.
Через каждые четыре «помидора», рекомендуется устраивать большой перерыв на полчаса-час. Поэтому была добавлена кнопка «Добавить перерыв».
Создав свой список задач, вы можете подкорректировать его и сохранить.
Так вы можете создать себе несколько расписаний, сразу на неделю.
Долгое нажатие на пункт списка позволяет либо отредактировать список заданий, либо начать с ним работать. Рабочий экран выглядит так:
Начав работать со списком, вверху вы видите название текущего этапа, его номер и количество этапов на данную задачу. Чуть ниже список всех циклов (в скобках указаны время работы и отдыха). Основное место занимает главный таймер, как из первой версии программы. Если вы справились с задачей досрочно, то можете нажать на кнопку «Завершить задачу досрочно», и тем самым удалить её из списка. В случае, если вы не уложились в расписание, то кнопка «Добавить цикл», добавит еще один цикл в задачу.
Часть четвертая (околотехническая)
Одним из головоломных моментов, для меня, было создать единые цветовые схемы для приложения. Всё хотелось сделать в стиле Material. Но при тестировании на разных устройствах полезли косяки. То, что выглядело прилично на версии Android 5.x, на 4.x версии смотрелось ужасно.
В конце концов я пришел к такому решению. Создал наборы Material-цветов:
#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
И файл со стилями:
И для каждой схемы пришлось создать свою форму для кнопки. Например для схемы «Индиго»:
В фрагменте настроек задавалось имя схемы, и при старте любой активности (в 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, нет подобных приложений?