2017流行的html编辑器,GitHub - zhanchen2017/SRich: 富文本编辑器

之前在看大部分的Android 富文本编辑几乎都是利用webview实现,所以,便有了做一个Android原生的富文本编辑器的主意。

Blog

样例

照惯例先秀一下图:

07d76db59d1946a480eb44cbbdb5e10c.png

0f95258ebe575dbb64003caa80aa7b3e.png

b7bb18ae40362c67638ed547780acd77.png

该富文本编辑器样式仿照印象笔记的Android版,绘制层实现基于Android的span样式。

目前已经实现的功能:

粗体、斜体、下划线、删除线、上下标、背景色字体样式;

分割线、缩进、有序列表、无序列表、复选框行样式;

支持插入本地图片;

支持插入网络图片;

支持图片预览;

支持撤销和反撤销;

支持本地持久化、支持增删改;

支持编辑模式和预览模式

具体的实现:

主要的实现在于编辑页面,直接是继承自EditText加以改造的(偷懒),但是如果想实现一个商业级别的编辑器,建议使用StaticLayout和自定义View,但是需要考虑的东西比较多,例如输入法和排版布局、选区管理绘制、各类点击事件。

36b4f3b9cb8a59b414dd578648e68991.png

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和缺陷,后续会继续找时间修补。

想增加的内容:

增加导入导出html

完善图片池

增加桌面小部件

增加保存为图片

支持超链接、引用更多样式

附上

BackgroundColorSpan 背景色

ForegroundColorSpan 文本颜色(前景色)

RasterizerSpan 光栅效果

StrikethroughSpan 删除线

SuggestionSpan 相当于占位符

UnderlineSpan 下划线

AbsoluteSizeSpan 绝对大小(文本字体)

DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。

ImageSpan 图片

RelativeSizeSpan 相对大小(文本字体)

ReplacementSpan 父类,一般不用

URLSpan 文本超链接

StyleSpan 字体样式

SubscriptSpan 下标

SuperscriptSpan 上标

TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)

TypefaceSpan 文本字体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值