2010-2-14
关键词:Android Handler
如下的代码实现一个Iphone 上的一个通过按backspace键后,数字过多消除的按钮事件。事件的原理如下,事件要的效果是这样的,当长按消除按钮后,数字会慢慢消除,当消除5个字符后继续消除的话消除速度会增快。通过这份代码可以帮助我们较好的初识Handler的工作机制。
package com.william.handlertest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public
class HandlerTest
extends Activity
implements Runnable{
private EditText content
= null;
private Button backspace
= null;
private
boolean isStop
= false;
private Handler mHandler
= null;
private
class BackspaceOnTouchListener
implements Button.OnTouchListener{
@Override
public
boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN
:
isStop
= true;
mHandler
= getHandler(content);
new Thread(HandlerTest.
this).start();
break;
case MotionEvent.ACTION_UP
:
isStop
= false;
break;
default
:
break;
}
return false;
}
}
@Override
public
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
content
= (EditText) findViewById(R.id.content);
content.setCursorVisible(false);
backspace
= (Button) findViewById(R.id.backspace);
backspace.setOnTouchListener(
new BackspaceOnTouchListener());
}
private Handler getHandler(
final TextView content){
return
new Handler(){
@Override
public
void handleMessage(Message msg) {
content.setText((String)msg.obj);
super.handleMessage(msg);
}
};
}
@Override
public
void run() {
try{
int i
=
0;
do{
i
++;
Thread.sleep((i
>
5
?
100
:
500));
String contentStr
=
this.content.getText().toString();
if(contentStr.length()
==
0){
break;
}
contentStr
= contentStr.substring(
0, contentStr.length()
-
1);
Message msg
= mHandler.obtainMessage();
msg.obj
=contentStr;
msg.sendToTarget();
}
while(isStop);
}
catch(Exception e){
e.printStackTrace();
}
}
}
代码参考了如下博文,在其消除至无字符时异常退出的非完美代码上进行了修改。
http://www.cnblogs.com/TerryBlog/archive/2010/08/25/1808445.html
通过Wiz发布