Note:个人便签,支持部分Markdown

效果图

首先,直接上图,有图有真相!!!


首页_无便签
编辑_竖屏
编辑_竖屏_预览
编辑_横屏
首页_有便签
搜索

GitHub地址

https://github.com/JYangkai/Note


为什么要自己做便签

现在手机上一般都会有便签、备忘录之类的App,可以帮助我们平时记录一些事情,当然,对于一般记录是足够了的,但是对于我这种喜欢将事情记录逐条记录,也就是希望能够排版清晰明了的人来说,能够用Markdown格式去记录再好不过,网上虽然也有一些支持Markdown的App,但是我觉得没必要,有的App还需要联网等等之类的很麻烦,所有我就想,能不能自己做一款本地支持Markdown格式的便签,于是就有了这款Note便签

怎么做

核心功能是能够支持Markdown,那么首先要弄懂怎么去解析Markdown,我的解析步骤是:

  1. 首先将文本分行逐行解析
  2. 创建一个实体类MD,用来保存每行的Markdown类型(比如:标题、引用、序列等)
  3. 我们根据Markdown的语法规则,一行行地分析,最终得到一个List<MD>,到这里我们就将解析工作完成了

完成以上三步,其实我们已经完成一半工作了,那么剩下的一半工作就剩渲染了

如何渲染

我们在使用TextView时,知道只要调用setText()方法就可以为其设置文本了,但是需要注意的是,setText()方法接收的参数是CharSequence类型,在Android里,SpannableString是实现CharSequence接口的类,而且SpannableString有一个setSpan()方法,这个方法可以将指定字符渲染成指定的SpanAndroid中有许多原生的Span,如果你不满足现有Span,还可以自定义Span,我在Note中就自定义了几个Span

核心类

关于如何解析和渲染的类,我写在了一个类里面
Markdown
里面是具体的解析方法和渲染步骤

其他

横屏编辑

横屏编辑支持左侧编辑,右侧预览

数据库

数据库使用的是LitePal

暂不支持

粗体、斜体、粗斜体、代码、表格
为什不支持?
因为这类属于同行Markdown格式,暂时还找不到比较简洁的方法去解决,解决了会提交代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,924评论 0 17
  • 1.为什么需要 Span? 在文本展示时,如果不需要设置样式,包括颜色,大小,对齐方式等属性时,可以利用 View...
    Kip_Salens阅读 5,779评论 0 2
  • 对一个服务既调用了startService()方法,又调用了bindService()方法的,这种情况下要同时调用...
    依然范特西_阅读 4,071评论 0 0
  • 概览Overview Markdown由Daring Fireball创建; 原始指南就在这里。但是,它的语法因不...
    大漠白杨JS阅读 5,351评论 0 2
  • 欢迎关注微信公众号:北岛向南(id:nanzhouie) GitHub Pages:https://zhouie....
    zhouie阅读 10,465评论 4 72

友情链接更多精彩内容