android button setontouchlistener,setOnTouchListener的问题
就是在按下的时候做一个5秒延迟操作,松手后判断一下,A方法是否执行过,执行过就不走B方法了。代码示例如下:Viewview=findViewById(R.id.view);view.setOnTouchListener(newOnTouchListener(){/**A方法是否执行了.true:执行了,false:没执行*/booleanisAFunction=false;Handl...
就是在按下的时候做一个5秒延迟操作,
松手后判断一下,A方法是否执行过,执行过就不走B方法了。
代码示例如下:View view = findViewById(R.id.view);
view.setOnTouchListener(new OnTouchListener() {
/**A方法是否执行了.true:执行了,false:没执行*/
boolean isAFunction =false;
Handler mHandler = new Handler(new Handler.Callback() {
/**
* A方法
*/
@Override
public boolean handleMessage(Message msg) {
isAFunction = true;
Toast.makeText(MainActivity.this, "执行了A方法", Toast.LENGTH_LONG).show();
return false;
}
});
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("TAG", "==onTouch,-->"+event.getAction());
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// 按下操作,延迟5秒发送执行A方法
isAFunction = false;
mHandler.sendEmptyMessageDelayed(0,1000* 5);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
// 抬起操作
if(isAFunction){//已执行了A方法,说明已经超过5秒了
}else{//未执行A方法,说明没超过5秒,停止之前的A方法操作,并执行B方法
mHandler.removeMessages(0);
Toast.makeText(MainActivity.this, "执行了B方法", Toast.LENGTH_LONG).show();
}
}
return true;
}
});
更多推荐
所有评论(0)