Android富文本编辑器总结(一)

本文介绍了在Android中实现类似有道云笔记的富文本编辑器的过程,包括序号排版、图片添加、字体设置和键盘管理等功能。通过分析需求和选择方案,探讨了使用EditText和Span的优缺点,并展示了序号算法的实现。文章作为开发记录,为后续开发提供参考。

Android的EditText很强大,支持文本缩进,字体设置以及图片的插入,需求很简单,参照有道云笔记……说得简单,有道云笔记反编译出来,看到libynote_lib.so和libynote_lib_img.so这两个库文件心顿时就凉了一半,我们这几只小菜鸟还只是处于应用层开发,不过拼死拼活了大半个月,总算马马虎虎的做出来了,现对这个做一个总结。总结的目的是对该任务的一个记录,该文章也只是个建议及引导,希望对读者有所帮助。


  1. 功能需求
  2. 方案的选择
  3. 实现
  4. 遇到的问题及解决方法
  5. 总结

  1. 需求:可以使用有道云笔记大致玩一玩,不得不说这个app确实做得好,虽说也有很多bug,但是使用简便,功能强大,对于那些bug自然而然也就不在意了。

    a. 序号排版:1.支持段落编号,当当前行有编号时,点击回车键,下一行能够自动显示编号并且+1;2.支持多级缩进编号。
    b.图片的添加:1.支持添加@XXX,@XXX作为一个整体,光标只能选择在这个整体之前或者之后,删除的时候必须整体删除;2.支持添加大图片功能。
    c.字体设置:1.支持文本的加粗、斜体、颜色、下划线等。
    d.键盘的显示和隐藏:1.支持点击打开键盘,再次点击关闭键盘。

  2. 方案的选择
    a. 使用多个EditText纵向排列,每个作为一个对象,每个可以管理自己的二级段落,递归管理。这样的好处是方便管理,并且添加的图片可以以控件的形式添加,放大缩小功能等都容易实现;缺点也很明显,无法跨多个EditText选择文本。
    b. span相关使用,详情请点这里→_→《Spans,一个强大的概念》,牛人的总结非常详细;这个可以很好地实现我们想要的效果,但是也有一定的缺陷。

  3. 实现
    a.编号的序号。
    编号分三类,序号类1234,abcd,I II罗马数字;无序类●○□;无编号类。其中无序类容易实现,序号类比较麻烦,先给出序号类编号算法。
    先给出接口父类IOrderIndex.java

public interface IOrderIndex {
   
   
    public String getIndexString(int index);
}

数字类NumberIndex.java

public class NumberIndex implements IOrderIndex{
   
   

    @Override
    public String getIndexString(int index) {

        return index + "";
    }

}

英文字母类EnglishLetterIndex.java

public class EnglishLetterIndex implements IOrderIndex {
   
   

    String[] array = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };

    @Override
    public String getIndexString(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值