就是在按下的时候做一个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;

}

});

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐