android edittext源码分析,Android:基于EditText实现撤销和重做机制

【转载请注明出处】

笔者:DrkCore (http://blog..net/DrkCore)

原文链接:(http://blog..net/drkcore/article/details/53440392)

一 场景描述和思路分析

二 代码实现

一、 场景描述和思路分析

说到撤销和重做想必大家脑海中浮现的一定是Ctrl+Z、Ctrl+Y这两个快捷键,平常生产开发的时候也少不了要和这两个按键打交道。作为一个开发者笔者自然对其中的实现方法感到好奇,想必阅读此文的你也是一样的。

如果你稍微懂点数据结构并且有着基础的封装思想的话,大体都能想到一些思路:

将用户操作抽象成一个接口,接口包含undo()和redo()两个方法,并用栈来记录操作的顺序,通过出入栈和调用两个方法来处理撤销和重做的逻辑。

涉及到撤销和重做的大部分都是需要用户编辑的功能,如果你想在Android上基于EditText开发出一个文本编辑器的话,那么按照这个思路一步步实现肯定是没有问题的。

我们发现文本的编辑操作其实可以简化为插入、删除。用户选中文本后粘贴的操作,也就是替换,可以分解为删除选中文本后插入粘贴板内容。

接下来只要记录下输入和删除的操作就可以保存用户的操作了,这里我们可以使用EditText提供了TextWatcher用于监听文本变化。

接下来请看代码实现。

二、 代码实现

首先我们需要实现编辑操作类,代码如下:

class EditOperation implements Parcelable, Serializable {

//原始内容,通常是被删除的部分

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值