CN105653121B - 一种基于安卓系统实现文字编辑中撤销重做的方法 - Google Patents
一种基于安卓系统实现文字编辑中撤销重做的方法 Download PDFInfo
- Publication number
- CN105653121B CN105653121B CN201510975296.3A CN201510975296A CN105653121B CN 105653121 B CN105653121 B CN 105653121B CN 201510975296 A CN201510975296 A CN 201510975296A CN 105653121 B CN105653121 B CN 105653121B
- Authority
- CN
- China
- Prior art keywords
- text
- button
- content
- edit box
- undostack
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明涉及一种基于安卓系统实现文字编辑中撤销重做的方法,属于安卓系统终端设备编辑技术领域。方法如下:采用堆栈的方式存储文本内容,通过使用ArrayList创建两个堆栈,以将新的文本存入堆栈中;为文本编辑框绑定监听器,以弹出窗口,在窗口中设置“撤销”按钮和“重做”按钮,并对两个按钮分别绑定监听器,为文本编辑框绑定监听器,以将窗口关闭。用户在编辑文本时,若有撤销或重做需求时,长按文本编辑框便可弹出窗口,窗口中有撤销和重做按钮,点击对应按钮便可实现操作。通过本发明,用户可以实现对文本编辑过程中误操作的撤销和文本编辑的重做,减少了用户重复编辑工作,提高了用户体验。
Description
技术领域
本发明涉及一种基于安卓系统实现文字编辑中撤销重做的方法,属于安卓系统终端设备编辑技术领域。
背景技术
用户在使用手机的过程中,文本编辑是不可避免的操作之一。随着安卓系统开发技术的发展,安卓系统的应用程序层出不穷,而这些应用程序或多或少都要涉及到文本编辑。
随着安卓应用程序的不断完善,文本编辑的操作也越来越简单、便捷。然而,当前的文本编辑存在一个不便之处,即缺少撤销和重做功能。用户在编辑的过程中难免会出现一些误操作,比如大篇幅地误删掉之前编辑的内容或者大篇幅地粘贴了新的文本等。如果发生类似的误操作,用户需要繁琐的再编辑工作,这样就会带来一些不必要麻烦,降低了工作效率和用户体验。
中国专利文件“201210425018.7”(公开号102929485A)提供了一种字符输入方法及装置,所述方法包括:当监听到用户在文本编辑框中进行删除操作时,记录所述文本编辑框中的文本;根据所述删除操作删除所述文本编辑框中的N个字符,所述N为大于等于1的整数;检测用户是否输入预设手势;当检测到用户输入所述预设手势,根据记录的所述文本编辑框中的文本恢复所述删除操作删除的字符。在本发明中,当用户通过删除键在移动终端的文本编辑框中进行删除操作时,预先记录文本编辑框中的文本,使得用户一旦需要撤消删除的内容时,可以通过输入预设手势进行恢复。此专利文件的不足在于两点,一是只能针对删除操作进行撤销,而且撤销操作只能执行一次,不能连续执行;二是删除动作撤消后,若想重新删除,此专利没有重做功能。
发明内容
针对现有技术的不足,本发明提供一种基于安卓系统实现文本编辑中撤销和重做的方法。该方法可以解决用户误操作后的撤销和重做问题,减少了用户繁琐的再编辑工作,使文本编辑更加人性化,操作起来更加简单便捷,提高了用户体验。
本发明的技术方案如下:
一种基于安卓系统实现文字编辑中撤销重做的方法,用户在文本编辑框中进行文本内容操作,当用户不想取消文本内容操作时,用户不作为,保持现状不变;当用户想取消文本内容操作时,用户撤销文本内容操作,在用户撤销文本内容操作后:当用户想重新恢复文本内容操作时,用户重做文本内容操作;当用户不想重新恢复文本内容操作,用户不作为,保持现状不变。所述的文本内容操作,可以是最近一次的文本内容操作,也可以是从最近一次开始的多次文本内容操作,即:用户可以只撤销最近一次的文本内容操作,对应的重做也是重做最近一次的文本内容操作;用户也可以从最近一次文本内容操作开始,连续多次撤销,连续多次撤销后的重做可以重做一次,也可以是连续多次重做。
根据本发明优选的,所述文本内容操作包括输入和删除。
根据本发明优选的,具体包括步骤如下:
(1)、通过ArrayList创建两个堆栈,采用堆栈存储文本编辑框中输入的文本内容;
(2)、为文本编辑框绑定监听器,所述监听器为TextChangeListener、OnLongClickListener和OnClickListener;分别响应文本内容变更事件、长按事件和文本编辑框点击事件;为文本编辑框绑定TextChangeListener,监听文本编辑框内文本内容是否变化,并重写beforeTextChanged()方法和afterTextChanged()方法来响应文本内容变更事件,当文本编辑框中的文本内容变更时,将新的文本内容添加到堆栈顶部;为文本编辑框绑定OnLongClickListener,监听文本编辑框长按事件,并重写onLongClick()方法来响应长按事件,当长按文本编辑框时弹出窗口;为文本编辑框绑定OnClickListener,监听文本编辑框点击事件,并重写onClick()方法来响应文本编辑框点击事件;
(3)、设计弹出窗口的布局文件,在所述布局文件中设计包括“撤销”按钮和“重做”按钮;
(4)、为“撤销”按钮和“重做”按钮分别绑定OnClickListener;分别响应“撤销”按钮点击事件和“重做”按钮点击事件。
优选的,步骤(1)中,两个堆栈分别是undostack和redostack。两个堆栈均为动态数组,可动态改变长度,undostack内存储的是用户每次编辑的文本内容,其顶部内容即为文本编辑框当前所显示内容;redostack内存储的是用户每次撤销的文本内容,其顶部内容为当前想要重做的文本内容。
优选的,步骤(1)中,文本编辑框为原始的EditText控件或用户自定义的继承于EditText的子类控件。
优选的,步骤(2)中,弹出窗口为PopupWindow窗口。
优选的,步骤(2)中,为文本编辑框绑定TextChangeListener,监听是否有文本内容变更事件,若否,继续监听;若是,在beforeTextChanged(CharSequence c,int start,int count,int after)方法中创建字符串变量bf,将变更前文本c赋给字符串变量bf,bf=c.toString();
在afterTextChanged(Editable s)方法中,判断undostack长度是否大于0:若否,将变更后文本s添加到undostack的顶部;若是,判断变更后文本s与undostack顶部内容、字符串变量bf是否相同:若变更后文本s与undostack顶部内容相同或变更后文本s与字符串变量bf相同,则忽略此次文本内容变更事件,若变更后文本s与undostack顶部内容、字符串变量bf均不同,则将变更后文本s添加到undostack的顶部。
优选的,步骤(2)中,为文本编辑框绑定OnLongClickListener,监听文本编辑框是否有长按事件,若否,继续监听;若有,弹出PopupWindow窗口,并在onLongClick()方法中,设置PopupWindow窗口的属性,属性包括PopupWindow窗口的布局文件、窗口弹出的位置、窗口的大小等。
优选的,步骤(2)中,为文本编辑框绑定OnClickListener,监听是否有文本编辑框点击事件,若否,继续监听;若有,在onClick()方法中,先判断是否有PopupWindow对象以及PopupWindow对象是否正在显示:若无PopupWindow对象或PopupWindow对象未正在显示,则忽略此次文本编辑框点击事件;若有PopupWindow对象且PopupWindow对象正在显示,则将PopupWindow窗口关闭。
优选的,步骤(4)中,为“撤销”按钮绑定OnClickListener,监听有无点击“撤销”按钮,点击“撤销”按钮,则在“撤销”按钮绑定监听器时重写的onClick()方法中,将undostack顶部内容转移到redostack中,使文本编辑框显示undostack当前顶部内容,从而响应了“撤销”按钮点击事件;为“重做”按钮绑定OnClickListener,监听有无点击“重做”按钮,点击“重做”按钮,则在“重做”按钮绑定监听器时重写的onClick()方法中,将redostack顶部内容转移到undostack中,使文本编辑框显示undostack当前顶部的内容,从而响应了“重做”按钮点击事件。
进一步优选的,所述步骤(4)中,为“撤销”按钮绑定OnClickListener,当监听到点击“撤销”按钮时,在“撤销”按钮绑定监听器时重写的onClick()方法中,先判断undostack的长度是否大于0:若否,将文本编辑框内容清空,若是,先将undostack顶部内容添加到redostack顶部,再将undostack顶部内容清除,然后再一次判断undostack此时的长度是否大于0:若否,将文本编辑框内容清空,若是,将此时undostack顶部内容显示在文本编辑框中;
为“重做”按钮绑定OnClickListener,当监听到点击“重做”按钮时,在”重做”按钮绑定监听器时重写的onClick()方法中,先判断redostack的长度是否大于0:若否,忽略此次”重做”按钮点击事件;若是,将redostack顶部内容添加到undostack顶部,再将redostack顶部内容清除,然后将undostack顶部内容显示在文本编辑框中。
本发明的beforeTextChanged()方法、afterTextChanged()方法、onLongClick()方法、onClick()方法都是本领域技术人员在Java语言中常用的方法规则,本发明对安卓系统的文本编辑框进行改进,使得用户在编辑文本时可根据个人编辑需要,通过长按编辑框弹出窗口,点击窗口中的“撤销”和“重做”按钮可实现对文本编辑过程中误操作的撤销和文本编辑的重做。
本发明的有益效果在于:
1、根据本发明的技术方案,用户在编辑文本的过程中,进行大篇幅删除或者修改后,想要恢复操作之前的文本时,只需长按文本编辑框,便可弹出窗口,窗口中有撤销按钮和重做按钮,用户点击撤销按钮便可撤销此操作,恢复操作之前的文本。
2、用户在编辑文本的过程中,对于某些操作不满意,点击了撤销按钮,恢复了原先的文本后,如若想要再次进行这些操作时,可以长按文本编辑框,在弹出的窗口中,点击重做按钮,便可重新进行撤销前的操作。
3、用户在编辑文本的过程中,难免会因为一些误操作而增加了编辑文本的工作量,使用本发明,可以进行撤销和重做操作,大大减少了编辑文本过程中的工作量,提高了工作效率和用户体验。
4、本发明技术方案的撤销功能不只是针对删除操作,对于任何编辑操作都可以进行撤销;此外,本发明除了撤销功能外,还有重做功能,即用户使用了撤销功能后,如若想重新进行撤销前的操作,可以使用重做功能。
附图说明
为了更清楚地说明本发明的技术方案,下面将对该方法描述中所需使用的附图作简单地介绍。
图1是本发明提供的基于安卓系统实现文字编辑中撤销的方法的操作简略图;
图2是本发明提供的基于安卓系统实现文字编辑中重做的方法的操作简略图;
图3是本发明在Activity界面对文本编辑框进行操作的整体流程图;
图4是本发明对文本编辑框绑定TextChangedListener监听器,监听事件及事件响应流程图;
图5是本发明对文本编辑框绑定TextChangedListener监听器,对PopupWindow窗口中“撤销”和“重做”按钮绑定OnClicklistener监听器,监听事件及事件响应流程图;
图6是本发明对文本编辑框绑定OnClickListenerr监听器,监听事件及事件响应流程图;
图7是本发明具体演示示例中输入文本的文本编辑框显示图;
图8是本发明具体演示示例中误删文本的文本编辑框显示图;
图9是长按文本编辑框后弹出PopupWindow窗口的文本编辑框显示图;
图10是点击文本编辑框后关闭PopupWindow窗口的文本编辑框显示图;
图11是在图10的基础上长按文本编辑框后弹出PopupWindow窗口的文本编辑框显示图;
图12是在图11的基础上点击“重做”后的文本编辑框显示图;
图13是在图12的基础上点击文本编辑框后关闭PopupWindow窗口的文本编辑框显示图;
图7-图13是本发明在安卓系统上具体操作时的界面显示截图,其顶部一栏为安卓系统的系统状态通知栏,系统状态通知栏里的内容与本发明技术方案无关。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面通过实施例并结合说明书附图对本发明的技术方案与实施步骤做进一步更加清楚完整的描述,但不限于此。
如图1-2所示。
图1中,实现文字编辑中撤销的方法时,实现步骤为:将undostack顶部内容添加到redostack的顶部,并将undostack顶部内容清除;将当前undostack顶部内容显示在文本编辑框中。如,将undostack顶部7处的内容添加到redostack的顶部,则undostack 6处的内容显示在文本编辑框中。
图2中,实现文字编辑中重做的方法时,实现步骤为:将redostack顶部内容添加到undostack的顶部,并将redostack顶部内容清除;将当前undostack顶部内容显示在文本编辑框中。如,将redostack顶部0处的内容添加到undostack的顶部,则undostack 7处的内容显示在文本编辑框中。
一种基于安卓系统实现文字编辑中撤销重做的方法,用户在文本编辑框中进行文本内容操作,当用户不想取消文本内容操作时,用户不作为,保持现状不变;当用户想取消文本内容操作时,用户撤销文本内容操作,在用户撤销文本内容操作后:当用户想重新恢复文本内容操作时,用户重做文本内容操作;当用户不想重新恢复文本内容操作,用户不作为,保持现状不变。所述的文本内容操作,可以是最近一次的文本内容操作,也可以是从最近一次开始的多次文本内容操作,即:用户可以只撤销最近一次的文本内容操作,对应的重做也是重做最近一次的文本内容操作;用户也可以从最近一次文本内容操作开始,连续多次撤销,连续多次撤销后的重做可以重做一次,也可以是连续多次重做。
所述文本内容操作包括输入和删除。
具体的,包括步骤如下:
(1)、文本编辑框为原始的EditText控件或用户自定义的继承于EditText的子类控件,采用堆栈的方式存储文本编辑框中输入的文本内容,通过ArrayList创建两个堆栈,分别是undostack和redostack;两个堆栈为动态数组,可动态改变长度。undostack内存储的是用户每次编辑的文本内容,其顶部内容即为文本编辑框当前所显示内容;redostack内存储的是用户每次撤销的文本内容,其顶部内容为当前想要重做的文本内容。
(2)、为文本编辑框绑定TextChangedListener监听器。监听编辑框内文本是否变化,并重写beforeTextChanged()方法和afterTextChanged()方法来响应文本内容变更事件。具体实施过程如图4所示。监听是否有文本内容变更事件,若否,继续监听;若是,在beforeTextChanged(CharSequence c,int start,int count,int after)方法中创建字符串变量bf,并将变更前文本c赋给字符串变量bf,bf=c.toString()。
在afterTextChanged(Editable s)方法中首先判断undostack长度是否大于0:若否,直接将变更后文本s添加到undostack的顶部;若是,判断变更后文本s与undostack顶部内容、字符串变量bf是否相同:若变更后文本s与undostack顶部内容相同或变更后文本s与字符串变量bf相同,则忽略此次文本内容变更事件,若变更后文本s与undostack顶部内容、字符串变量bf均不同,则将变更后文本s添加到undostack的顶部。
为文本编辑框绑定监听器OnLongClickListener。监听文本编辑框长按事件,并重写onLongClick()方法来响应长按事件,当长按文本编辑框时弹出PopupWindow窗口。具体实施过程如图5所示。监听文本编辑框是否有长按事件,若否,继续监听;若有,弹出PopupWindow窗口,并在onLongClick()方法中,设置PopupWindow窗口的属性,属性包括PopupWindow窗口的布局文件、窗口弹出的位置、窗口的大小。
为文本编辑框绑定监听器OnClickListener。监听文本编辑框点击事件,并重写为文本编辑框绑定监听器时的onClick()方法来响应文本编辑框点击事件。具体实施过程如图6所示。监听是否有文本编辑框点击事件,若否,继续监听;若有,在onClick()方法中,先判断是否有PopupWindow对象以及PopupWindow对象是否正在显示:若无PopupWindow对象或PopupWindow对象未正在显示,则忽略此次文本编辑框点击事件;若有PopupWindow对象且PopupWindow对象正在显示,则将PopupWindow窗口关闭。
(3)设计弹出窗口的布局文件,在所述布局文件中设计包括“撤销”按钮和“重做”按钮;
(4)为布局文件中的“撤销”按钮和“重做”按钮分别绑定监听器OnClickListener。为“撤销”按钮绑定OnClickListener,监听有无点击“撤销”按钮,点击“撤销”按钮,则在“撤销”按钮绑定监听器时重写的onClick()方法中,将undostack顶部内容转移到redostack中,使文本编辑框显示undostack当前顶部内容,从而响应了撤销操作;为“重做”按钮绑定OnClickListener,监听有无点击“重做”按钮,点击“重做”按钮,则在“重做”按钮绑定监听器时重写的onClick()方法中,将redostack顶部内容转移到undostack中,使文本编辑框显示undostack当前顶部的内容,从而响应了重做操作。
具体实施过程如图5所示。为“撤销”按钮绑定OnClickListener,当监听到点击“撤销”按钮时,在“撤销”按钮绑定监听器时重写的onClick()方法中,先判断undostack的长度是否大于0,若否,将文本编辑框内容清空;若是,先将undostack顶部内容添加到redostack顶部,再将undostack顶部内容清除,然后再一次判断undostack此时的长度是否大于0:若否,将文本编辑框内容清空,若是,将此时undostack顶部内容显示在文本编辑框中。
为“重做”按钮绑定OnClickListener,当监听到点击“重做”按钮时,即视为发生“重做”按钮点击事件,在“重做”按钮绑定监听器时重写的onClick()方法中,先判断redostack的长度是否大于0,若否,忽略此次“重做”按钮点击事件;若是,将redostack顶部内容添加到undostack顶部,再将redostack顶部内容清除,然后将undostack顶部内容显示在文本编辑框中。
实施例1
本实施例利用如上所述的技术方案具体展示、介绍使用过程,用户在使用如图7应用程序进行文本编辑。
在文本编辑框中输入“今天晚上有会,时间地点:晚上六点半,四楼会议室”,如图7所示。输入的过程中一直向undostack中添加新内容,undostack和redostack的存储情况如表1-2所示。
表1 Undostack堆栈存储情况
0 | 今天晚上开会 |
1 | 今天晚上开会, |
2 | 今天晚上开会,时间地点 |
3 | 今天晚上开会,时间地点: |
4 | 今天晚上开会,时间地点:晚上六点半 |
5 | 今天晚上开会,时间地点:晚上六点半, |
6 | 今天晚上开会,时间地点:晚上六点半,四楼会议室 |
7 | |
: | |
: |
表2 redostack堆栈存储情况
0 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
: |
假如用户由于误操作删除掉重要信息“时间地点:下午六点半,四楼会议室”。此时文本编辑框显示的内容如图8所示。此时undostack和redostack的存储情况如表3-4所示,由于并未点击“撤销”,redostack堆栈的存储情况与之前相比未发生变化。
表3 误删文本后的undostack堆栈存储情况
0 | 今天晚上开会 |
1 | 今天晚上开会, |
2 | 今天晚上开会,时间地点 |
3 | 今天晚上开会,时间地点: |
4 | 今天晚上开会,时间地点:晚上六点半 |
5 | 今天晚上开会,时间地点:晚上六点半, |
6 | 今天晚上开会,时间地点:晚上六点半,四楼会议室 |
7 | 今天晚上开会, |
: |
表4 误删文本后的redostack堆栈存储情况
0 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
: |
当用户长按文本编辑框时,弹出PopupWindow窗口,如图9所示。
用户点击“撤销”按钮,此时undostack和redostack的存储情况如表5-6所示,由表3-6可知,点击“撤销”按钮后,原表3中undostack堆栈中7处的内容添加至redostack堆栈的0处。
表5 点击“撤销”按钮后undostack堆栈存储情况
0 | 今天晚上开会 |
1 | 今天晚上开会, |
2 | 今天晚上开会,时间地点 |
3 | 今天晚上开会,时间地点: |
4 | 今天晚上开会,时间地点:晚上六点半 |
5 | 今天晚上开会,时间地点:晚上六点半, |
6 | 今天晚上开会,时间地点:晚上六点半,四楼会议室 |
7 | |
: |
表6 点击“撤销”按钮后redostack堆栈存储情况
0 | 今天晚上开会, |
1 | |
2 | |
3 | |
: |
用户点击文本编辑框,关闭PopupWindow窗口,此时文本编辑框界面如图10所示。
实施例2
本实施例利用如具体实施方式所述的技术方案具体展示、介绍使用过程,用户在使用如图7应用程序进行文本编辑。
本实施例中,用户进行了实施例1的所有操作后,想要重新删除“时间地点:下午六点半,四楼会议室”。
当用户长按文本编辑框时,弹出PopupWindow窗口,如图11所示。
用户点击“重做”按钮后,文本编辑框显示的内容如图12所示,此时undostack和redostack的存储情况如表7-8所示。
表7 点击“重做”按钮后undostack堆栈存储情况
0 | 今天晚上开会 |
1 | 今天晚上开会, |
2 | 今天晚上开会,时间地点 |
3 | 今天晚上开会,时间地点: |
4 | 今天晚上开会,时间地点:晚上六点半 |
5 | 今天晚上开会,时间地点:晚上六点半, |
6 | 今天晚上开会,时间地点:晚上六点半,四楼会议室 |
7 | 今天晚上开会, |
表8 点击“重做”按钮后redostack堆栈存储情况
0 | |
1 | |
2 | |
3 | |
4 | |
: |
然后用户点击文本编辑框,关闭PopupWindow窗口,如图13所示。
Claims (7)
1.一种基于安卓系统实现文字编辑中撤销重做的方法,其特征在于,包括步骤如下:
(1)、通过ArrayList创建两个堆栈,采用堆栈存储文本编辑框中输入的文本内容;
(2)、为文本编辑框绑定监听器,所述监听器为TextChangeListener、OnLongClickListener和OnClickListener;为文本编辑框绑定TextChangeListener,监听文本编辑框内文本内容是否变化,并重写beforeTextChanged()方法和afterTextChanged()方法来响应文本内容变更事件;为文本编辑框绑定OnLongClickListener,监听文本编辑框长按事件,并重写onLongClick()方法来响应长按事件,当长按文本编辑框时弹出窗口;为文本编辑框绑定OnClickListener,监听文本编辑框点击事件,并重写onClick()方法来响应文本编辑框点击事件;
(3)、设计弹出窗口的布局文件,在所述布局文件中设计包括“撤销”按钮和“重做”按钮;
(4)、为“撤销”按钮和“重做”按钮分别绑定OnClickListener;为“撤销”按钮绑定OnClickListener,监听有无“撤销”按钮点击事件,点击“撤销”按钮,则在“撤销”按钮绑定监听器时重写的onClick()方法中,将undostack顶部内容转移到redostack中;为“重做”按钮绑定OnClickListener,监听有无点击“重做”按钮,点击“重做”按钮,则在“重做”按钮绑定监听器时重写的onClick()方法中,将redostack顶部内容转移到undostack中;
为“撤销”按钮绑定OnClickListener,当监听到点击“撤销”按钮时,在“撤销”按钮绑定监听器时重写的onClick()方法中,先判断undostack的长度是否大于0:若否,将文本编辑框内容清空,若是,先将undostack顶部内容添加到redostack顶部,再将undostack顶部内容清除,然后再一次判断undostack此时的长度是否大于0:若否,将文本编辑框内容清空,若是,将此时undostack顶部内容显示在文本编辑框中;
为“重做”按钮绑定OnClickListener,当监听到点击“重做”按钮时,在“重做”按钮绑定监听器时重写的onClick()方法中,先判断redostack的长度是否大于0:若否,忽略此次“重做”按钮点击事件;若是,将redostack顶部内容添加到undostack顶部,再将redostack顶部内容清除,然后将undostack顶部内容显示在文本编辑框中。
2.根据权利要求1所述的基于安卓系统实现文字编辑中撤销重做的方法,其特征在于,步骤(1)中,两个堆栈分别是undostack和redostack。
3.根据权利要求1所述的基于安卓系统实现文字编辑中撤销重做的方法,其特征在于,步骤(1)中,文本编辑框为原始的EditText控件或用户自定义的继承于EditText的子类控件。
4.根据权利要求1所述的基于安卓系统实现文字编辑中撤销重做的方法,其特征在于,步骤(2)中,弹出窗口为PopupWindow窗口。
5.根据权利要求1所述的基于安卓系统实现文字编辑中撤销重做的方法,其特征在于,步骤(2)中,为文本编辑框绑定TextChangeListener,监听是否有文本内容变更事件,若否,继续监听;若是,在beforeTextChanged()方法中创建字符串变量bf,将变更前文本c赋给字符串变量bf,bf=c.toString();
在afterTextChanged()方法中,判断undostack长度是否大于0:若否,将变更后文本s添加到undostack的顶部;若是,判断变更后文本s与undostack顶部内容、字符串变量bf是否相同:若变更后文本s与undostack顶部内容相同、或变更后文本s与字符串变量bf相同,则忽略此次文本内容变更事件,若变更后文本s与undostack顶部内容、字符串变量bf均不同,则将变更后文本s添加到undostack的顶部。
6.根据权利要求4所述的基于安卓系统实现文字编辑中撤销重做的方法,其特征在于,步骤(2)中,为文本编辑框绑定OnLongClickListener,监听文本编辑框是否有长按事件,若否,继续监听;若有,弹出PopupWindow窗口,并在onLongClick()方法中,设置PopupWindow窗口的属性,属性包括PopupWindow窗口的布局文件、窗口弹出的位置和窗口的大小。
7.根据权利要求1所述的基于安卓系统实现文字编辑中撤销重做的方法,其特征在于,步骤(2)中,为文本编辑框绑定OnClickListener,监听是否有文本编辑框点击事件,若否,继续监听;若有,在onClick()方法中,先判断是否有PopupWindow对象以及PopupWindow对象是否正在显示:若无PopupWindow对象或PopupWindow对象未正在显示,则忽略此次文本编辑框点击事件;若有PopupWindow对象且PopupWindow对象正在显示,则将PopupWindow窗口关闭。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510975296.3A CN105653121B (zh) | 2015-12-22 | 2015-12-22 | 一种基于安卓系统实现文字编辑中撤销重做的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510975296.3A CN105653121B (zh) | 2015-12-22 | 2015-12-22 | 一种基于安卓系统实现文字编辑中撤销重做的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105653121A CN105653121A (zh) | 2016-06-08 |
CN105653121B true CN105653121B (zh) | 2019-03-22 |
Family
ID=56476637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510975296.3A Active CN105653121B (zh) | 2015-12-22 | 2015-12-22 | 一种基于安卓系统实现文字编辑中撤销重做的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653121B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201488B (zh) * | 2016-06-30 | 2019-08-30 | 国云科技股份有限公司 | 一种可重用的步骤窗口实现方法 |
CN106250268B (zh) * | 2016-07-22 | 2019-04-02 | 努比亚技术有限公司 | 文本内容恢复装置及方法 |
CN106294748A (zh) * | 2016-08-10 | 2017-01-04 | 珠海市魅族科技有限公司 | 一种桌面文件夹的展示方法以及终端 |
CN108733456A (zh) * | 2017-04-18 | 2018-11-02 | 北大方正集团有限公司 | 一种基于在线编辑应用的修订方法及系统 |
CN109034820B (zh) * | 2018-06-27 | 2021-08-31 | 创新先进技术有限公司 | 一种对已发出消息的处理方法及装置 |
CN109101152A (zh) * | 2018-07-26 | 2018-12-28 | 维沃移动通信有限公司 | 一种信息输入方法及终端 |
CN110231909B (zh) * | 2019-05-15 | 2021-03-05 | 广州视源电子科技股份有限公司 | 书写操作的处理方法和装置 |
CN113836875B (zh) * | 2021-09-16 | 2023-08-22 | 网易(杭州)网络有限公司 | 文本处理方法、系统、装置、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929485A (zh) * | 2012-10-30 | 2013-02-13 | 广东欧珀移动通信有限公司 | 一种字符输入方法及装置 |
CN103116466A (zh) * | 2013-03-04 | 2013-05-22 | 珠海金山办公软件有限公司 | 触摸屏设备和在其中执行撤销或者恢复操作的方法及系统 |
CN103558985A (zh) * | 2013-11-14 | 2014-02-05 | 华为技术有限公司 | 一种字符恢复的方法及终端设备 |
CN105094757A (zh) * | 2014-04-29 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 在安卓系统上清空文本内容的方法、装置和终端设备 |
-
2015
- 2015-12-22 CN CN201510975296.3A patent/CN105653121B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929485A (zh) * | 2012-10-30 | 2013-02-13 | 广东欧珀移动通信有限公司 | 一种字符输入方法及装置 |
CN103116466A (zh) * | 2013-03-04 | 2013-05-22 | 珠海金山办公软件有限公司 | 触摸屏设备和在其中执行撤销或者恢复操作的方法及系统 |
CN103558985A (zh) * | 2013-11-14 | 2014-02-05 | 华为技术有限公司 | 一种字符恢复的方法及终端设备 |
CN105094757A (zh) * | 2014-04-29 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 在安卓系统上清空文本内容的方法、装置和终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105653121A (zh) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653121B (zh) | 一种基于安卓系统实现文字编辑中撤销重做的方法 | |
US20160055232A1 (en) | Gesture-based on-chart data filtering | |
US7676785B2 (en) | Hosted application as a designer in an integrated development environment | |
Amant et al. | Model-based evaluation of expert cell phone menu interaction | |
CN108228253A (zh) | 一种app构建方法及系统 | |
WO2017083217A1 (en) | Optimizing content for consistent presentation through collaboration database service | |
CN106844181B (zh) | 用于记录用户行为的方法、系统及移动终端 | |
CN110286978B (zh) | 窗口层级切换的方法、装置、设备和存储介质 | |
CN107066188B (zh) | 一种发送截屏图片的方法及终端 | |
US20060150150A1 (en) | Editor support for modifying generated source code | |
CN103150079A (zh) | 一种基于Firefox OS平台的应用图标管理方法及装置 | |
Whiting et al. | Creating an iPhone application for collecting continuous ABC data | |
CN102819500B (zh) | 一种创建外部设备控制界面的方法及装置 | |
CN115983221B (zh) | 可视化的rpa表格操作录制与自动执行方法及系统 | |
CN110532159A (zh) | 数据监听方法、装置、设备及计算机可读存储介质 | |
CN109828820A (zh) | 一种应用窗口的焦点刷新方法、装置、存储介质及终端 | |
CN106844182A (zh) | 用于记录用户行为的方法、系统及移动终端 | |
CN106095660A (zh) | 应用的质量监控方法及装置 | |
CN110188308B (zh) | 客户端自动打点上报方法、存储介质、设备及系统 | |
WO2016127577A1 (zh) | 一种处理事件的方法及装置 | |
CN108920143A (zh) | 一种用于人机交互软件的快速开发方法 | |
KR101368044B1 (ko) | 이클립스 플랫폼 기반 플러그인 모듈 | |
CN104469013B (zh) | 一种移动终端及其拨号编辑方法 | |
CN110413192A (zh) | 快捷按键响应方法、装置、设备及存储介质 | |
CN104516860A (zh) | 选择被显示文档内的文本的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |