馬克筆記是運行在Android設備上面的一款開源的Markdown筆記,它的功能開發得已經比較完善,已經可以知足大部分用戶的需求。如今將其開源到Github上面,用來交流和學習。固然,更但願你可以參與到項目的開發當中,幫助馬克筆記變得更加有用。java
馬克筆記是一款開源的Markdown筆記應用,它的界面設計採用了Google最新的Material Design風格。該筆記如今的功能已經比較完善,可以知足用戶大多數場景的需求。開源該軟件的目的是但願與更多的人交流和學習,同時也但願可以有人蔘與到項目的開發中,一塊兒幫助馬克筆記,讓它變得更加有用。android
你能夠經過加入Google+社區來關注該軟件開發的最新動態,而且能夠參與Beta測試。git
馬克筆記如今已經發布到了酷安網上面,也歡迎你下載和使用該軟件。另外,筆者還開發了一款清單應用多功能清單,感興趣的同窗也能夠了解一下。github
這裏是該應用的一些截圖經過Photoshop調整以後獲得的展現圖,經過展現圖,你大概能夠了解一下該軟件的主要功能和開發狀態。在接下來的行文中,我會向你更詳細地介紹它使用到的一些技術以及如今開發完成的一些功能和特性。web
我把該軟件當前已經支持的功能列了一個清單:數據庫
編號 | 功能 |
---|---|
1 | 基本的添加、修改、歸檔、放進垃圾箱、完全刪除操做 |
2 | 基本的Markdown語法,外加MathJax等高級特性 |
3 | 特點的時間線功能,經過相似於AOP的操做記錄用戶的操做信息 |
4 | 多種形式的媒體數據,包括文件、視頻、音頻、圖片、手寫和位置信息等 |
5 | 多主題,支持夜間主題,而且有多種可選的主題色和強調色 |
6 | 多彩的圖表用於統計用戶的數據信息 |
7 | 三種形式的桌面小控件,而且能夠爲每一個筆記添加快捷方式 |
8 | 容許你爲筆記指定多個多彩的標籤 |
9 | 使用「樹結構」模擬文件夾操做,支持多層文件夾,並能夠進行層級的搜索 |
10 | 容許將筆記導出爲PDF、TXT、MD格式的文本、HTML和圖片 |
11 | 使用應用獨立鎖,增強數據安全 |
12 | 容許用戶備份數據到外部存儲空間和OneDrive |
13 | 圖片自動壓縮,節省本地的數據存儲空間 |
未來但願開發和完善的功能:apache
編號 | 功能描述 |
---|---|
1 | 數據同步,本地的文件管理容易致使多平臺的不一致,增長同步服務,可以實現多平臺操做 |
2 | 文件服務器,用於獲取圖片和文件的連接 |
3 | 富文本編輯,即時的編輯預覽 |
4 | 容許添加鬧鐘,而且複選框能夠編輯 |
5 | 添加地圖來展現用戶的位置信息的變動 |
你能夠從更新日誌中獲取到軟件的更新信息。設計模式
馬克筆記用到了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 | 時間格式美化 |
特別須要說明的一點是,馬克筆記是在開發了一段時間以後從新引入的ViewModel,由於做者本人水平有限,或者對ViewModel理解不夠深刻,設計不免有不足的地方,還請批評指正。服務器
對於數據庫部分,筆者本身設計了一套數據的訪問邏輯,這裏使用到了模板和單例等設計模式。它的好處在於,當你想要向程序中添加一個數據庫實體的時候,只須要不多的配置便可,能夠省去不少的樣板代碼。並且,因爲該項目的一些特殊需求,好比要記錄統計信息等,因此就本身設計了一下。固然,可能性能上仍然有許多值得提高的地方,但筆者認爲仍不失爲一個簡單的學習材料。
對於Markdown解析,可使用js在webview裏面解析,也能夠像本項目同樣在程序種用java進行解析。筆者認爲使用Flexmark在java種解析的好處是更方便地對解析的功能進行拓展。如該軟件中的MathJax的解析就是在Flexmark的基礎上進行的拓展。
正如一開始說起的那樣,馬克筆記仍然有許多不足,我但願能夠有更多的人幫助馬克筆記繼續完善它的功能。固然,這並不勉強。若是你但願對該項目貢獻代碼,你能夠fork該項目,並向該項目提交請求。你能夠在waffle.io上面跟蹤issue的開發狀態。或者,你發現了該軟件中存在的一些問題,你能夠在issue中向開發者報告。若是有其餘的需求,能夠直接經過郵箱郵件開發者。
由於這篇文章是從Github的Readme文件中拷貝出來的,因此忘記加上Github地址了,抱歉。如今補上:Github