首页 > 代码库 > android项目 之 记事本(7)----- 手写功能之删除、恢复和清空
android项目 之 记事本(7)----- 手写功能之删除、恢复和清空
上一节,为记事本添加了手写的功能,但是没有实现底部按钮的各种功能,这节就先实现撤销,恢复和清空的功用。
因为不会录制屏幕成gif图片,所以就以图片形式给出吧,不是很形象,凑合着看:
显然,需要为底部GridView的添加item单击事件:
private GridView paint_bottomMenu;
paint_bottomMenu = (GridView)findViewById(R.id.paintBottomMenu); paint_bottomMenu.setOnItemClickListener(new MenuClickEvent());
下面就是在监听器中实现具体的功能:
1.删除功能
1)取得最后一个字的位置
2)将第0个到倒数第二个位置的所有内容设置为自定义editText的内容,间接实现删除最后一个字的功能
3)更新最后一个字的位置为删除后的最后一个字的位置
3)将删除的字存储在列表中(其实存储在栈中更好,因为是先进后出),用于恢复。
代码如下:
private ArrayList<CharSequence> deleteChar = new ArrayList<CharSequence>();
//删除 case 2: Editable editable = et_handwrite.getText(); //找到最后一个手写字,并删除最后一个手写字 int selectionEnd = et_handwrite.getSelectionEnd(); System.out.println("end = "+ selectionEnd); if(selectionEnd < 1){ et_handwrite.setText(""); } else if(selectionEnd == 1){ et_handwrite.setText(""); CharSequence deleteCharSeq = editable.subSequence(0,1); deleteChar.add(deleteCharSeq); } else{ System.out.println("delete"); CharSequence charSeq = editable.subSequence(0, selectionEnd - 1); CharSequence deleteCharSeq = editable.subSequence(selectionEnd - 1,selectionEnd); et_handwrite.setText(charSeq); et_handwrite.setSelection(selectionEnd - 1); //将删除的字存储到列表中,以便恢复使用 deleteChar.add(deleteCharSeq); } break;
2. 恢复功能:
1)取出删除列表中的最后一个元素
2)将取出的元素添加在自定义editText的末尾
3)从删除列表中删掉最后一个元素
//恢复 case 3: //取出删除列表中的元素 int length = deleteChar.size(); if(length > 0){ et_handwrite.append(deleteChar.get(deleteChar.size()-1)); deleteChar.remove(deleteChar.size()-1); } break;
3.清空功能:
1)创建Dialog,弹出是否删除提示
2)为Dialog添加PositiveButton和setNegativeButton
3)在PositiveButton单击事件中,设置自定义editText的内容为空
//清空屏幕 case 4 : if(et_handwrite.getSelectionEnd() > 0){ AlertDialog.Builder builder = new Builder(HandWriteActivity.this); builder.setTitle("您确定要清空所有吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { et_handwrite.setText(""); dialog.cancel(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); Dialog dialog = builder.create(); dialog.show(); } break;
这样,手写的三个基本功能就已实现,对于设置画笔的粗细和颜色,以后再做。
android项目 之 记事本(7)----- 手写功能之删除、恢复和清空