本文主要是介绍Android富文本编辑器总结(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android的EditText很强大,支持文本缩进,字体设置以及图片的插入,需求很简单,参照有道云笔记……说得简单,有道云笔记反编译出来,看到libynote_lib.so和libynote_lib_img.so这两个库文件心顿时就凉了一半,我们这几只小菜鸟还只是处于应用层开发,不过拼死拼活了大半个月,总算马马虎虎的做出来了,现对这个做一个总结。总结的目的是对该任务的一个记录,该文章也只是个建议及引导,希望对读者有所帮助。
- 功能需求
- 方案的选择
- 实现
- 遇到的问题及解决方法
- 总结
需求:可以使用有道云笔记大致玩一玩,不得不说这个app确实做得好,虽说也有很多bug,但是使用简便,功能强大,对于那些bug自然而然也就不在意了。
a. 序号排版:1.支持段落编号,当当前行有编号时,点击回车键,下一行能够自动显示编号并且+1;2.支持多级缩进编号。
b.图片的添加:1.支持添加@XXX,@XXX作为一个整体,光标只能选择在这个整体之前或者之后,删除的时候必须整体删除;2.支持添加大图片功能。
c.字体设置:1.支持文本的加粗、斜体、颜色、下划线等。
d.键盘的显示和隐藏:1.支持点击打开键盘,再次点击关闭键盘。方案的选择
a. 使用多个EditText纵向排列,每个作为一个对象,每个可以管理自己的二级段落,递归管理。这样的好处是方便管理,并且添加的图片可以以控件的形式添加,放大缩小功能等都容易实现;缺点也很明显,无法跨多个EditText选择文本。
b. span相关使用,详情请点这里→_→《Spans,一个强大的概念》,牛人的总结非常详细;这个可以很好地实现我们想要的效果,但是也有一定的缺陷。实现
a.编号的序号。
编号分三类,序号类1234,abcd,I II罗马数字;无序类●○□;无编号类。其中无序类容易实现,序号类比较麻烦,先给出序号类编号算法。
先给出接口父类IOrderIndex.java
public interface IOrderIndex {public String getIndexString(int index);
}
数字类NumberIndex.java
public class NumberIndex implements IOrderIndex{@Overridepublic 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", &#
这篇关于Android富文本编辑器总结(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!