android项目 之 记事本(7)----- 手写功能之删除、恢复和清空

时间:2021-06-03 06:53:41

          上一节,为记事本添加了手写的功能,但是没有实现底部按钮的各种功能,这节就先实现撤销,恢复和清空的功用。

          因为不会录制屏幕成gif图片,所以就以图片形式给出吧,不是很形象,凑合着看:

          android项目 之 记事本(7)----- 手写功能之删除、恢复和清空android项目 之 记事本(7)----- 手写功能之删除、恢复和清空

          android项目 之 记事本(7)----- 手写功能之删除、恢复和清空android项目 之 记事本(7)----- 手写功能之删除、恢复和清空

         android项目 之 记事本(7)----- 手写功能之删除、恢复和清空android项目 之 记事本(7)----- 手写功能之删除、恢复和清空

             

              显然,需要为底部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;


           这样,手写的三个基本功能就已实现,对于设置画笔的粗细和颜色,以后再做。