之前在看大部分的Android 富文本编辑几乎都是利用webview实现,所以,便有了做一个Android原生的富文本编辑器的主意。
https://blog.csdn.net/qq_15893929/article/details/88670198
照惯例先秀一下图:
该富文本编辑器样式仿照印象笔记的Android版,绘制层实现基于Android的span样式。
主要的实现在于编辑页面,直接是继承自EditText加以改造的(偷懒),但是假如想实现一个商业级别的编辑器,建议使用StaticLayout和自己设置View,但是需要考虑的东西比较多,例如输入法和排版布局、选区管理绘制、各类点击事件。
NoteEditText 继承自 EditText,NoteEditorManager管理基本逻辑;
NoteEditorRender负责绘制,NoteLineSpanRender是行样式、NoteWordSpanRender是字体样式;
NoteRevocationManager负责撤销与反撤销;
NoteImageLoader 是图片加载库,之前想用Glide库,但是Glide不支持直接在UI线程获取缓冲区的Bitmap,所以简单写了一个基于OkHttp的图片加载,内部参照(抄)了Glide的思想,例如ImageView在宽高为0时如何加载图片、图片过大时候怎样解决。Glide太强大了,代码也好复杂;
后续还是要继续替换成Glide,可以通过自己设置设置Glide缓冲池,这样外部即可以直接拿到缓冲区数据;
converter 是简单地将富文本对象转成文本数据,或者将文本数转成富文本对象的板块;
dao 数据库层;
route 是在利用APT和借鉴OkHttp责任链模式仿写的一个跳转路由的功能;
只是自己学习所写的一个小工具,完全可以去掉。
这个版本更多的是将自己所学的少量知识的运用,只做了小一段时间,所以存留很多了bug和缺陷,后续会继续找时间修补。
想添加的内容:
ChyengJason/SRich