標籤:筆跡的刪除 清空 恢複 手寫功能的實現
上一節,為記事本添加了手寫的功能,但是沒有實現底部按鈕的各種功能,這節就先實現撤銷,恢複和清空的功用。
因為不會錄製螢幕成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() {@Overridepublic void onClick(DialogInterface dialog, int which) {et_handwrite.setText("");dialog.cancel();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.cancel();}});Dialog dialog = builder.create();dialog.show();}break;
這樣,手寫的三個準系統就已實現,對於設定畫筆的粗細和顏色,以後再做。
android項目 之 記事本(7)----- 手寫功能之刪除、恢複和清空