码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2014-09-18 22:19:44      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:笔迹的删除 清空 恢复   手写功能的实现   

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

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

          bubuko.com,布布扣bubuko.com,布布扣

          bubuko.com,布布扣bubuko.com,布布扣

         bubuko.com,布布扣bubuko.com,布布扣

             

              显然,需要为底部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)----- 手写功能之删除、恢复和清空

标签:笔迹的删除 清空 恢复   手写功能的实现   

原文地址:http://blog.csdn.net/jesson20121020/article/details/39377877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!