MarkNote

Project Url: Shouheng88/MarkNote
Introduction: 📑马克笔记:一款支持 Markdown 语法的 Android 端笔记应用
More: Author   ReportBugs   
Tags:



MarkNote is a markdown note-taking application for Android. It has many cool features which can fit most of the requirements of the user. Now it is open sourced on Github for communication and studying. Surely, we hope that you can join the development of MarkNote to make it more useful. For the English README file, please check here : README-English.

马克笔记是运行在 Android 设备上面的一款开源的 Markdown 笔记,它的功能开发得已经比较完善,已经能够满足大部分用户的需求。现在将其开源到 Github 上面,用于交流和学习。当然,更希望你能够参与到项目的开发当中,帮助马克笔记变得更加有用。

1、关于马克笔记

马克笔记是一款开源的 Markdown 笔记应用,它的界面设计采用了 Google 最新的 Material Design 风格。该笔记现在的功能已经比较完善,能够满足用户大多数场景的需求。开源该软件的目的是希望与更多的人交流和学习,同时也希望能够有人参与到项目的开发中,一起帮助马克笔记,让它变得更加有用。

你可以通过加入Google+社区来关注该软件开发的最新动态,并且可以参与 Beta 测试。

马克笔记现在已经发布到了酷安网上面,也欢迎你下载和使用该软件。另外,笔者还开发了一款清单应用多功能清单,感兴趣的同学也可以了解一下。

2、应用展示图

这里是该应用的一些截图通过 Photoshop 调整之后得到的展示图。 通过展示图,你大概可以了解一下该软件的主要功能和开发状态。 在接下来的行文中,我会向你更详细地介绍它使用到的一些技术以及现在开发完成的一些功能和特性。

3、功能和特性

我把该软件当前已经支持的功能列了一个清单:

编号 功能
1 基本的添加、修改、归档、放进垃圾箱、彻底删除操作
2 基本的 Markdown 语法,外加MathJax等高级特性
3 特色的时间线功能,通过类似于 AOP 的操作记录用户的操作信息
4 多种形式的媒体数据,包括文件、视频、音频、图片、手写和位置信息
5 多主题,支持夜间主题,并且有多种可选的主题色和强调色
6 多彩的图表用于统计用户的数据信息
7 三种形式的桌面小控件,并且可以为每个笔记添加快捷方式
8 允许你为笔记指定多个多彩的标签
9 使用“树结构”模拟文件夹操作,支持多层文件夹,并可以进行层级的搜索
10 允许将笔记导出为 PDF、TXT、MD 格式的文本、HTML 和图片
11 使用应用独立锁,加强数据安全
12 允许用户备份数据到外部存储空间和 OneDrive
13 图片自动压缩,节省本地的数据存储空间

将来希望开发和完善的功能:

编号 功能描述
1 数据同步,本地的文件管理容易导致多平台的不一致,增加同步服务,能够实现多平台操作
2 文件服务器,用于获取图片和文件的链接
3 富文本编辑,即时的编辑预览
4 允许添加闹钟,并且复选框可以编辑
5 添加地图来展示用户的位置信息的变更

你可以从更新日志中获取到软件的更新信息。

4、依赖和用到的一些技术

马克笔记用到了 MVVM 的设计模式,还用到了 DataBinding 等一系列技术。下面的表格中列出了用到的具体的依赖和简要的描述。在此,还要感谢这些开源项目的作者:

编号 依赖 描述
1 arch.lifecycle 使用 ViewModel+LiveData 实现 Model 和 View 的解耦
2 Stetho Facebook 开源的安卓调试框架
3 Fabric 错误跟踪,用户数据收集
4 RxBinding
5 RxJava
6 RxAndroid
7 OkHttp
8 Retrofit
9 Glide
10 BRVAH 非常好用的 Recycler 适配器
11 Gson
12 Joda-Time Java 时间库
13 Apache IO 文件操作库
14 Material dialogs
15 PhotoView
16 Hello charts
17 FloatingActionButton
18 HoloColorPicker
19 CircleImageView
20 Changeloglib 日志信息
21 PinLockView 锁控件
22 BottomSheet 底部弹出的对话框
23 Luban 图片压缩
24 Flexmark 基于 Java 的 Markdown 文本解析
25 PrettyTime 时间格式美化

数据库操作

对于数据库部分,笔者自己设计了一套数据的访问逻辑,这里使用到了模板和单例等设计模式。 它的好处在于,当你想要向程序中添加一个数据库实体的时候,只需要很少的配置即可,可以省去很多的样板代码。 而且,由于该项目的一些特殊需求,比如要记录统计信息等,所以自行设计了一套来访问。 后续会介绍它的一些设计的思路、优势和局限性。

Markdown 解析

对于 Markdown 解析,笔者在这方面寻找了许多资料,个人信息里面的 stars 就是很好的证明。 你可以使用 javascript 在 webview 里面解析,也可以像本项目一样在程序种用 java 进行解析。 这里使用的是 Flexmark 在 java 中解析,它的好处是对于 Android 开发者,一般而言,对 Java 语言可能比对 Javascript 更加熟悉。 比如,该软件中的 MathJax 的解析就是在 Flexmark 的基础上进行的拓展。

5、参与项目

正如一开始提及的那样,马克笔记仍然有许多不足,我希望可以有更多的人帮助马克笔记继续完善它的功能。 当然,这并不勉强。如果你希望对该项目贡献代码,你可以 fork 该项目,并向该项目提交请求。 你可以在waffle.io上面跟踪 issue 的开发状态。 或者,你发现了该软件中存在的一些问题,你可以在 issue 中向开发者报告。 如果有其他的需求,可以直接通过邮箱邮件开发者。

6、用户反馈

在文件Feedback.md中收集和整理了用户的反馈。

Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea