android按钮的点击事件可以使用onClick实现,而长按事件则是可以用onLongClick实现,但是一个按钮分别实现点击和长按两种功能,是否可以使用点击事件(onClick) + 长按事件(onLongClick)来实现呢?实践证明此类组合无法实现长按事件的效果。本文探讨使用onTouch来实现按钮的点击和长按让TextView中数字的数值自增加。
<span style="font-size:18px;">value_up_btn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if( event.getAction() == MotionEvent.ACTION_DOWN ){
OnClick = true;
Thread t = new Thread(){
public void run() {
while (OnClick){
s = Integer.parseInt(ts); //ts是TextView中的值,String类型,s是int型
s = s + 1;
ts = Integer.toString(s);
try {
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
handler.sendEmptyMessage(0x01); //新开启的线程中不能修改UI界面,通过handler与UI线程交互
}
}
};
t.start();
}else if( event.getAction() == MotionEvent.ACTION_UP ){
OnClick = false;
}
return false;
}
});
handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x01:
value_up_show.setText(ts); //将改变的数值显示到TextView上
break;
default:
}
}
};</span>