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

本文介绍了一个手写记事本应用中撤销、恢复和清空功能的实现过程。通过监听底部菜单按钮点击事件,实现了删除字符、恢复已删除字符及清空屏幕的功能,并提供了详细的代码示例。

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

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

2325eca359dd6444fac80edef7979327.png

a09580c1df2ed7a564b2249e45f99710.png

229b4d780f021aba3e22f40b7fd1a7ae.png

8dccd6ad86841db02804b9bee0738364.png

fbee3492ae98d2dce79ccd559b36f8b1.png

9a65f4c811055b0e0308dc763ce9222e.png

显然,需要为底部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 deleteChar = new ArrayList();//删除

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;

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

原文:http://blog.youkuaiyun.com/jesson20121020/article/details/39377877

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值