在我的应用程序中,我需要在2秒内按下按钮,然后触发动作。感谢这个问题(How can I get button pressed time when I holding button on)我有它的工作,但我需要用户可以看到他/她实际上是按下按钮,例如使用“加载”图标'或指示用户继续按下按钮的东西。如果他停止按下按钮,我想要加载图标'离开。
这是我的代码:
handler = new Handler();
Button myButton = (Button) findViewById(R.id.buttonId);
myButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Toast.makeText(Visor.this, "Hold the button for 2 sec...", Toast.LENGTH_SHORT).show();
handler.postDelayed(run, 2000);
} else {
handler.removeCallbacks(run);
}
return true;
}
});
(run
是2秒后触发的动作)
我的问题是:是否有任何回调方法指示用户是否按下按钮?我尝试使用event.isButtonPressed(int Button)
,但它仅适用于API 21,我的应用适用于< 10。
谢谢。
更新:正如@Divers和@Blackbelt指出的那样,setOnTouchListener
结合MotionEvent.ACTION_DOWN
就是我解决这个问题所需要的。