Как сделать приложение заметки для андроид
РАЗРАБОТКА ПРИЛОЖЕНИЯ ДЛЯ ЗАМЕТОК «PLUSWORDS» НА ANDROID
1 Нижнетагильский государственный социально – педагогический институт (филиал) ФГАОУ ВО «Российский государственный профессионально – педагогический университет» Текст работы размещён без изображений и формул.Полная версия работы доступна во вкладке "Файлы работы" в формате PDF В настоящее время смартфоны используются намного чаще, чем стационарные компьютеры. Пользователям стало удобно носить мини-компьютеры при себе и обращаться к ним в нужный момент, поэтому потребность в удобных приложениях разных направлений растет с каждым днем. Если возникает необходимость написать заметку или новое изученное слово на каком-либо языке, пользователь обращается к приложениям для заметок, которое хранит необходимую информацию. Пользуясь таким приложением, пользователь может не волноваться о потере данных. Разработка мобильных приложений стала очень популярной, поэтому я хочу рассказать и показать вам, как создать приложение для заметок на Андроид.
1 Мобильная разработка на Android
У устройств андроид огромное количество версий, и особенность их в том, что они называются сладостями. В настоящее время наиболее широко используются версии 4.4 «KitKat», 5.0 «Lollipop» и новая 6.0 «Marshmallow». Андроид имеет возможность автоматически обновляться до более свежих версий. В данный момент версия Lollipop является наиболее актуальной, поэтому разрабатывать и тестировать наше программное обеспечение мы будем на этой версии.
На данный момент существует большое количество блокнотов-приложений, с огромным количеством разнообразных функций, внешним видом и возможностями. Например: «Springpad», «NoteEverything», «Evernote» и др. Однако, исследования показали, что пользователь не желает «копаться» в недрах приложения и предпочитает молниеносно внести в память необходимую заметку. Основываясь на таком желании пользователя, мы сделаем наше приложение простым для использования, интуитивно понятным, креативным и привлекательным в графическом интерфейсе.
2 Обзор средств и инструментов для разработки
Для начала нам необходимо выбрать среду для разработки Android-приложения. Куда удобнее работать в интегрированной среде разработки (Integrated Development Environment – IDE), так как она обеспечивает необходимыми инструментами и функциями. На сегодняшний день существуют две популярные среды для разработки Android-приложений – Eclipse и Android Studio. Мы выберем Android Studio, так как он специализирован для разработок андроид приложений, поддерживается Google и обладает новыми особенностями.
Для работы с Android Studio необходимы инструменты для разработки – Java SE Development Kit 8 и SDK Manager.
Так же, для дизайна нам понадобится программа Paint Tool SAI и Adobe Photoshop, а для музыкальных фрагментов Cockos REAPER. Установим необходимое программное обеспечение.
3 Разработка приложения и дизайна
Разработаем приложение «PlusWords» для заметок. Нам необходимо создать каркас приложения, добавить в него функции и элементы, подключить дизайн и создать музыкальные фрагменты.
Откроем программу Android Studio. При создании нового проекта зададим ему название «PlusWords». Далее выберем версию андроид, для которой будем создавать приложение – Lollipop 5.0. Охват аудитории, которая сможет пользоваться этим приложением, будет 9,7%. Однако, эта версия позволит нам использовать функции интереснее, чем в предыдущих версиях. Далее выбираем шаблон Blank Activity.
Рис. 1. Main activity
У нас будет три layout – окна, наследующиеся от главного окна. Главное окно main.xml (рис.1), наследующиеся: activity_top.xml (рис.2) для ввода иностранных слов и activity_bottom.xml (рис.3) для записи самих заметок. Для каждого layout необходимо создать свой java-файл для кода.
В MainActivity.java пропишем код для включения фоновой музыки приложения:
public void onClick4(View view)
mySound2 = MediaPlayer.create(this, R.raw.appsound);
public void onClick5(View view)
Теперь при нажатии на on и off музыка включается и выключается.
Пропишем код, позволяющий по нажатию на картинку-лягушку проигрывать аудиозапись:
public class MainActivity extends Activity
protected void onCreate(Bundle savedInstanceState)
AudioAttributes aa = new AudioAttributes.Builder()
mySound = new SoundPool.Builder()
frogsoundId = mySound.load(this, R.raw.frogsound, 1);>
public void onClick3(View view)
Теперь в окне Words (рис. 2) создадим иконку «Сохранить» и текстовый редактор. Введенные пользователем данные будут храниться в sample.txt файле.
Рис. 2. Top activity
В TopActivity.java пропишем код открытия файла и его сохранения:
public class TopActivity extends Activity
private final static String FILENAME = "sample.txt"; // имя файла
private EditText mEditText;
protected void onCreate(Bundle savedInstanceState)
mEditText = (EditText) findViewById(R.id.editText);>
public boolean onCreateOptionsMenu(Menu menu)
public boolean onOptionsItemSelected(MenuItem item)
// Метод для открытия файла
private void openFile(String fileName)
InputStream inputStream = openFileInput(fileName);
if (inputStream != null)
InputStreamReader isr = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(isr);
StringBuilder builder = new StringBuilder();
while ((line = reader.readLine()) != null)
> catch (Throwable t)
"Exception: " + t.toString(), Toast.LENGTH_LONG).show();>>
// Метод для сохранения файла
private void saveFile(String fileName)
OutputStream outputStream = openFileOutput(fileName, 0);
OutputStreamWriter osw = new OutputStreamWriter(outputStream);
> catch (Throwable t)
"Exception: " + t.toString(), Toast.LENGTH_LONG).show();
public void onResume()
Теперь мы можем набирать текст в layout activity_top и сохранять его (рис.2).
Для окна Notes (рис.3) сделаем то же самое, но изменив id. Текст сохранять будем в файле sample2.txt.
Рис. 3. Bottom activity
3 Тестирование на устройстве
Тестировать приложение можно на виртуальном устройстве, встроенном в программе Android Studio. Но виртуальное устройство очень долго загружается, теряется большое количество времени, поэтому программисты используют реальные устройства для тестирования приложения. Для подключения реального устройства Андроид, откроем SDK manager и проверим, что в папке Extras установлен Google USB Driver. Далее установим на компьютер Android ADB driver. На андроид устройстве необходимо включить режим разработчика. Для этого кликаем много раз на версию прошивки до момента включения режима разработчика. Далее в пункте система появятся «Параметры разработчика». Необходимо включить отладку USB, показывать прикосновения, активный режим. Теперь подключаем девайс к компьютеру физически. Программа Android Studio видит наше устройство, и мы можем запускать приложение на мобильное устройство.
Заключение
В ходе работы было создано приложение для заметок «PlusWords». При разработке мобильного приложения необходимо учитывать размеры экранов всех мобильных устройств. Внимательность при программировании обеспечит безошибочную работу приложения, а музыкальные фрагменты украсят его. Разработка мобильного приложения требует комплексного подхода. На каждой ступени разработки необходимо тестировать программный продукт. Успехов вам!
Внимание! В статье описывается создание приложения версии 1.0. Текущий код в репозитории может отличаться от описываемого в статье.
Наверное, некоторые из вас знают, что помимо языка программирования Kotlin JetBrains также разрабатывает библиотеку Anko, для создания UI приложения, в качестве замены обычным XML-файлам. Мы не будем использовать его в нашем проекте, дабы не ставить в затруднительное положение людей не знакомых с Anko.
Для написания приложений на языке Kotlin, Android Studio нужен специальный плагин. Инструкцию по установке плагина можно найти здесь. Также не забудьте отключить функцию «Instant Run» в настройках Android Studio, т. к. на данный момент она не поддерживается плагином Kotlin.
Для корректной работы генерации кода нужно использовать версию плагина не ниже 1.0.1. Я использовал версию Kotlin 1.0.2 EAP. Вот так выглядит файл build.gradle приложения в моем проекте:
Итак, для начала нам нужно определиться что же мы будем писать? Недолго думая я остановился на приложении-заметках. Название тоже придумалось легко — Notelin. Приложение очень простое и состоит из двух экранов:
— Главный экран — содержит в себе список с заметками
— Экран заметки — здесь можно смотреть/редактировать содержание выбранной заметки
Требования к приложению небольшие:
— Добавление/просмотр/удаление заметки
— Просмотр информации о заметке
— Сортировка заметок по заголовку и по дате
— Поиск по заголовкам заметок
Для работы с базой данных я буду использовать библиотеку Android Active. Урок по работе с ней можно найти по этой ссылке. Для реализации Depency Injection была использована библиотека Dagger 2. На Хабре есть много статей по работе с ней. Основой всего приложения будет библиотека Moxy. С ее помощью мы реализуем паттерн MVP в нашем проекте. Она полностью решает проблемы жизненного цикла, благодаря чему вы можете не переживать о пересоздании компонентов вашего приложения. Также мы воспользуемся набором расширений для языка Kotlin в Android — KAndroid. Про остальные библиотеки я буду рассказывать по ходу дела.
Ниже приведен список зависимостей проекта:
А вот так выглядит список зависимостей приложения:
Обратите внимание, что вместо apt я использую kapt. Это плагин для Gradle, позволяющий аннотировать Kotlin-элементы.
Вот так выглядит структура нашего проекта в конечном варианте:
У заметок будет четыре поля:
- Дата создания
- Дата изменения
- Заголовок
- Текст
Реализуем все это в коде:
По этой модели библиотекой ActiveAndroid будет создана БД, в которой будут храниться наши заметки. Если вы заметили, у нас есть два конструктора: пустой и с параметрами. Первый конструктор будем использовать мы, а второй — ActiveAndroid. Наша модель наследуется от класса Model, благодаря чему мы можем сохранять и удалять наши заметки просто вызывая методы save() и delete(), например:
Но прежде чем использовать нашу модель, нам нужно прописать кое-какие мета-данные в Manifest-файле:
Думаю, все понятно без комментариев. Осталось унаследовать класс Application от com.activeandroid.app.Application:
Чтобы приложение было менее зависимо от БД я создал обертку NoteDao над нашей моделью, в которой будут происходить все операции по созданию, сохранению, обновлению и удалению заметок:
Наверное, вы заметили, что для создания объектов мы не использовали ключевое слово new — это отличие Kotlin от Java.
Также является главным экраном приложения. На нем пользователь может добавить/удалить заметку, просмотреть информацию о заметке, отсортировать их по дате или названию, а также произвести поиск по заголовкам.
Создаем MainView и MainPresenter
Теперь нам нужно перевести все это в код. Для начала создадим интерфейс нашей View:
Далее мы реализуем созданный интерфейс в нашей активити:
Одной из особенностей Kotlin, является то, что наследование и реализация интерфейсов указывается через двоеточие после имени класса. Также не имеет разницы идет название родительского класса перед интерфейсами, после или даже между ними, главное, чтобы класс в списке был один. Т. е. запись выше могла бы выглядеть так:
Если же вы попытаетесь добавить через запятую название еще одного класса, то IDE выдаст ошибку и подчеркнет красной линией название класса, который идет вторым.
Пока оставим методы пустыми. Как видите, активити наследуется от MvpAppCompatActivity. Это нужно для того, чтобы активити могла восстанавливать состояние при повороте экрана.
Создадим класс презентер:
Презентер также наследуется от MvpPresenter, которому мы указываем с какой View мы будем работать.Осталось инжектировать нашу модель в презентер. Для этого мы создаем модуль — поставщика NoteDao:
Создадим Component для инжектирования презентера:
Теперь нам нужно создать статический экземпляр класса AppComponent в классе Application:
Теперь мы можем инжектировать нашу модель в презентере:
Для взаимодействия MainView и MainPresenter нам нужно создать переменную в MainActivity:
Плагин Moxy сам привяжет View к фрагменту и произведет другие необходимые действия.
Создадим разметку экрана со списком и плавающей кнопкой. Файл activity_main.xml:
Для реализации летающей кнопки я использовал библиотеку FloatingActionButton. Google уже добавили FAB в support-библиотеку, поэтому вы можете воспользоваться их решением.
Укажем нашей Activity, какой макет она должна показывать:
Далее нам нужно связать FAB и список, чтобы при прокручивании списка вверх кнопка исчезала:
Нам не нужно писать порядком надоевший findViewById, нужно лишь прописать одну строчку в блоке с import'ами:
Как видите, последний пакет совпадает с названием нашего xml-файла. IDE автоматически инициализирует свойства (property) наших View и их имена совпадают с ID, которые мы указали в разметке.
Давайте реализуем загрузку заметок из БД. Заметки нужно загружать только один раз и использовать их в последующем. В этом нам поможет метод onFirstViewAttach класса MvpPresenter, который вызывается единожды при первой привязке View к презентеру. Далее, сколько бы мы не крутили и вертели нашу Activity, данные будут закешированы в презентере.
Создадим адаптер для нашего списка:
В адаптере мы используем метод formatDate. Он служит для форматирования даты в строку:
Данный метод находится в файле DateUtils.kt и мы можем использовать как обычный статический метод. Отличие от статического метода здесь в том, что метод принадлежит не классу, а пакету и нам не нужно писать имя класса перед названием метода. В аннотации мы указываем название класса, через который мы будем обращаться к методу из Java. Например в Java дынный метод будет вызываться так:
В методе onNotesLoaded нашей Activity мы показываем наши заметки:
Насколько я знаю, для обработки клика по элементам RecycleView не существует «официального» OnItemClickListener. Поэтому мы воспользуемся своим решением:
В методе onCreate нашей Activity пишем:
Функция with позволяет не писать каждый раз имя переменной, а только лишь вызывать методы у объекта, который мы передали в нее. Обратите внимание, что для получения Activity я использовал не просто this, а this@MainActivity. Это связано с тем, что при использовании this в блоке with, возвращается объект, который мы передали в функцию with. При обычном клике по пункту мы переходим на Activity, где мы можем просмотреть текст нашей заметки. При долгом нажатии появляется контекстное меню. Если вы заметили, перед закрывающей скобкой я не написал слово return. Это не ошибка, а особенность языка Kotlin.
Вот что происходит при нажатии на пункт меню в презентере:
Мы еще не создали класс NoteActivity, поэтому компилятор будет выдавать ошибку. Для решения этой проблемы можно создать класс NoteActivity или вовсе закомментировать код внутри метода openNote. Запись NoteActivity::class.java аналогична NoteActivity.class в Java. Также заметьте, что мы обращаемся к списку не через метод get(position), а через квадратные скобки, как к обычному массиву.
При использовании MVP-библиотеки Moxy в своем приложении, нам нужно привыкать, что все действия с View, такие как показ/закрытие диалога и другие, должны проходить через презентер. Изначально это не очень привычно и неудобно, но пользы от этого гораздо больше, т. к. мы можем быть уверены, что при пересоздании Activity наше диалоговое окно никуда не пропадет.
Я не буду показывать код контекстного меню, удаления и показа информации о заметке т. к. статья получается очень большой. Но, думаю, общий смысл вы уловили. Также следует отметить, что метод hideNoteContextDialog у презентера должен вызываться даже при закрытии диалога через кнопку назад или при нажатии на область за границами диалога.
При нажатии на FAB должна создаваться новая заметка:
Для создания новой заметки мы вызываем у презентера функция openNewNote:
Метод openNewNote использует созданный нами ранее openNote, в который мы передаем Context и позицию заметки в списке.
Реализуем поиск по заметкам
Давайте добавим поиск по заметкам. Создайте в папке res/menu файл main.xml:
В MainActivity пишем:
При изменении текста в поле поиска мы передаем строку из поля в презентер, после чего показываем результаты в списке. На самом деле, у SearchView нет метода onQueryChange, его добавила библиотека KAndroid.
Реализуем поиск в презентере:
Обратите внимание, как красиво, в одну строчку мы реализовали поиск по списку с помощью метода filter и лямбд. В Java тот же функционал занял бы 6-7строк. Осталось отобразить результаты поиска:
Реализуем сортировку заметок
И последний этап в создании главного экрана, это сортировка заметок. Добавим в res/menu/main.xml следующие строки:
Теперь нам нужно обработать нажатие на пункты меню:
Оператор when является более функциональным аналогом switch-case в Java. Код сортировки в MainPresenter:
Теперь нам нужно создать экран с содержанием заметки. Здесь пользователь может просмотреть/отредактировать заголовок и текст заметки, сохранить или удалить ее, а также просмотреть информацию о заметке.
Создаем NoteView и NotePresenter
Экран содержит всего лишь три View:
-Заголовок
-Дата последнего изменения
-Текст заметки
А вот и сама разметка:
В начале статьи я мельком упомянул об Anko. Библиотека позволяет существенно сократить код, не теряя при этом в удобочитаемости. Вот так, например, выглядела бы наша разметка при использовании Anko:
Но не будем отвлекаться и приступим к написанию кода. Первым делом нам нужно создать View:
Имплементируем NoteView в NoteActivity:
В onCreate мы извлекаем id заметки, чтобы презентер достал заметку из БД и передал данные во View. Создадим презентер:
Не забудьте добавить в класс AppComponent строку:
Покажем нашу заметку:
Реализуем сохранение заметки
Для сохранения заметки нам нужно выбрать соответствующий пункт в меню. Создайте файл res/menu/note.xml:
Опять же, я не стал приводить код удаления и вывода информации о заметке. При просмотре исходного кода, вы можете заметить, что помимо идентификатора заметки я передал в NoteActivity позицию заметки в списке. Это нужно для того, чтобы при удалении заметки на экране просмотра заметки, она также удалялась из списка. Для реализации этого функционала я использовал EventBus. И опять, я не стал приводить код.
На этом все: заметки добавляются, редактируются и удаляются. Также мы можем осуществить поиск и сортировку заметок. Обязательно посмотрите полный исходный код, ссылку на который я привел в конце статьи, чтобы лучше понять как все устроено.
Конечно же, нельзя забывать о людях, которые помогли мне при написании статьи. Хотел бы выразить благодарность хабраюзерам Юрию Шмакову (@senneco) за помощь с его библиотекой Moxy и за помощь по другим вопросам. Также, хочу сказать спаcибо сотруднику JetBrains Роману Белову (@belovrv) за ревью статьи и за предоставленный код на Anko.
UPD: Еще хотел сказать спасибо Sirikid за EPIC COMMIT, благодаря которому я переделал внушительную часть кода с использованием фич Kotlin'а.
Надеюсь, эта статья смогла убедить вас в том, что писать приложения на Kotlin не трудно, а может даже и легче, чем на Java. Конечно же, могут встречаться и баги, которые сотрудники JetBrains достаточно быстро фиксят. Если у вас появились какие-либо вопросы, вы можете задать их напрямую разработчикам на Slack-канале. Также вы можете почитать статьи о разработке на Kotlin здесь.
Flutter – это мобильный кроссплатформенный SDK с открытым исходным кодом от Google. Приложения, написанные на Dart и Flutter, по умолчанию включают в себя Material Design компоненты, что придает привлекательный внешний вид и юзабилити.
Инструкция по установке Flutter на официальном сайте.
Во-первых, давайте настроим проект:
- создадим проект Flutter в Android Studio или в terminal/cmd с помощью команды "fluttercreatenotes";
- в dart удалим класс homePage и создадим новый файл с нашим собственным классом homePage, содержащий наш Scaffold (набор виджетов);
- реализуем stateful класс StaggeredGridPage. Это позволит сделать макет приложения для заметок, содержащий элементы в шахматном порядке.
В приложении для создания шахматной сетки используем Staggered grid, а SQLite – для хранения данных.
Ниже приведен код из pubspec.yaml с необходимыми зависимостями. Добавьте их, сохранитесь и с помощью команды "flutter packages get" инициализируйте новые зависимости:
Создайте класс для заметок. Вам нужна функция toMap для запросов к БД:
В итоге получаем домашнюю страницу HomePage.dart с телом StaggeredGridView. В AppBar поместите кнопку, чтобы пользователь мог переключаться между шахматным и list представлением. А еще, оберните тело в SafeArea для "дружественности" к телефонам.
StaggeredGridView требует четкого указания количества заметок в ряду. В горизонтальном формате на экране телефона или планшета будет организовано по три заметки и две для телефона в портретном формате.
Для отображения заметок используйте плитки. Плитка должна содержать предварительный просмотр заголовка и содержимого заметки. В обработке текста разной длины поможет библиотека авто-разворачивания текста.
Для постраничной навигации у Flutter есть Navigator (как segue в iOS или Intent в Android).
Плитка выглядит примерно так:
Теперь реализуйте вьюху для редактирования/создания заметки, обладающую различными функциями в AppBar, например: отмена, архивирование и т. д. Больше дополнительных действий можно вызвать в модальном блоке: поделиться, копировать, удалить и вызов горизонтально-прокручиваемого выбора цвета для смены фона конкретной заметки.
Виджеты NotePage, BottomSheet и ColorSlider разнесите по разным классам и файлам для чистого управляемого кода. Чтобы изменить цвет, выбранный пользователем из ColorSlider, нужно обновить состояние объекта. Подключите виджеты через callback-функции, чтобы они реагировали на изменения, и могли самостоятельно обновляться.
Лайфхакер уже составил подборку самых популярных программ, позволяющих вести заметки на Android. Теперь разберём остальные приложения из этой категории, достойные вашего внимания.
1. FairNote
- Типы заметок: текстовые записи и чек-листы.
- Каталогизация: метки.
- Синхронизация между устройствами: нет, только бэкап заметок в Dropbox или Google Drive.
- Доступ через веб или компьютер: нет.
- Напоминания: да.
Разработчики FairNote делают акцент на безопасности заметок. Вы можете зашифровать выбранные записи и защитить их паролем. Платная версия программы позволяет шифровать сразу все файлы одним нажатием и использовать вместо пароля сканер отпечатков пальцев.
2. Omni Notes
- Типы заметок: текстовые записи с вложениями, изображения и чек-листы.
- Каталогизация: категории и метки.
- Синхронизация между устройствами: нет, только бэкап заметок в локальную память.
- Доступ через веб или компьютер: нет.
- Напоминания: да.
Ключевая особенность Omni Notes — продвинутая поддержка вложений. Вы можете прикреплять к заметкам видео, снимки, аудиозаписи, гиперссылки и даже собственные рисунки. Кроме того, стоит отметить возможность объединения нескольких заметок в одну. Программа полностью бесплатна.
3. SomNote
- Типы заметок: текстовые записи с вложениями и скетчи.
- Каталогизация: папки.
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: да.
- Напоминания: нет.
Этот заметочник может понравиться любителям классических папок и файлов. Заметки можно защитить от посторонних, поставив на приложение ПИН-код. Помимо прочего, SomNote позволяет прикреплять к записям снимки и скетчи. Оформив платную подписку, вы избавитесь от рекламы, получите множество тем оформления, 30 ГБ в облаке и возможность защищать только выбранные папки.
4. Monospace
- Типы заметок: текстовые записи.
- Каталогизация: папки и хештеги.
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: нет.
- Напоминания: нет.
Простой и элегантный текстовый редактор, в котором нет ничего лишнего. В Monospace присутствуют инструменты форматирования, поэтому программа подходит для создания длинных записей с красивой разметкой. Для покупателей платной версии приложение будет синхронизировать заметки между аппаратами.
5. Squid
- Типы заметок: скетчи.
- Каталогизация: блокноты (категории).
- Синхронизация между устройствами: нет, только бэкап в Dropbox.
- Доступ через веб или компьютер: да.
- Напоминания: нет.
Squid разработан специально для рукописных заметок. Вы можете использовать разные шаблоны вроде нотного стана, разлинованного холста и математического листа в сетку или просто рисовать и писать на белом фоне. Сервис также позволяет импортировать PDF-документы и делать пометки на них. Большее количество шаблонов и импорт PDF будут доступны только после оформления платной подписки.
6. Notebook
- Типы заметок: текстовые записи с вложениями, чек-листы, аудиозаписи, изображения, скетчи, PDF-файлы.
- Каталогизация: блокноты (папки) и группы.
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: да.
- Напоминания: нет.
Разработчики этого заметочника позиционируют его как убийцу Evernote. И надо сказать, не без основания. Notebook — это мощный кросс-платформенный сервис для создания и управления большой коллекцией заметок. Множество настроек, удобная навигация и наглядные режимы отображения документов делают Notebook одним из лучших проектов в категории. Тем более что сервис бесплатен.
7. ColorNote
- Типы заметок: текстовые записи, чек-листы.
- Каталогизация: отсутствует.
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: нет.
- Напоминания: да.
Простейшая программа для заметок. Из дополнительных функций можно выделить лишь шифрование документов и возможность поставить на приложение мастер-пароль. Приложение ColorNote полностью бесплатно.
8. Diigo
- Типы заметок: текстовые записи, изображения, PDF-файлы и закладки.
- Каталогизация: категории и метки.
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: да.
- Напоминания: нет.
Diigo — гибрид закладочника и блокнота: помимо заметок, вы можете сохранять и каталогизировать ссылки на веб-страницы. Бесплатно сервис будет хранить ограниченное количество элементов. Чтобы отключить лимит, нужно оформить подписку.
9. GNotes
- Типы заметок: текстовые записи с вложениями, скетчи и чек-листы.
- Каталогизация: блокноты (категории) и метки.
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: да.
- Напоминания: да.
К заметкам GNotes можно прикреплять фотографии, видео, контакты, собственные рисунки, аудиозаписи и прочие файлы. В остальном это стандартный сервис для заметок. Автоматическая синхронизация между устройствами работает только в платной версии GNotes.
10. Simplenote
- Типы заметок: текстовые записи.
- Каталогизация: метки.
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: да.
- Напоминания: нет.
Удобный сервис с приятным на вид минималистичным интерфейсом. Доступ к приложению можно ограничить с помощью ПИН-кода. Simplenote задуман как бесплатный инструмент для быстрого создания обыкновенных текстовых заметок. Никаких наворотов в нём нет.
11. Quip
- Типы заметок: текстовые записи с вложениями.
- Каталогизация: папки (категории).
- Синхронизация между устройствами: да.
- Доступ через веб или компьютер: да.
- Напоминания: да.
Сервис Quip разработан с прицелом на командную работу с документами. Но вы можете бесплатно использовать его как личный блокнот. Файловой системой Quip напоминает Windows. Так, сервис позволяет создавать, перемещать и вкладывать одна в другую папки, предназначенные для хранения заметок. С помощью удобных инструментов форматирования можно создавать записи со сложной структурой заголовков, гиперссылками и вложенными списками.
Читайте также: