我想在按住按钮时实现重复操作。示例:当用户单击按钮并按住它时,它应该以固定的时间间隔一次又一次地调用类似的方法,直到用户将手指从按钮上移开。
有多种方法可以实现这一点,但一个非常简单的方法是发布Runnable
on a Handler
有一定的延迟。在最基本的形式中,它看起来有点像这样:
Button button = (Button) findViewById(R.id.button);
button.setOnTouchListener(new View.OnTouchListener() {
private Handler mHandler;
@Override public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (mHandler != null) return true;
mHandler = new Handler();
mHandler.postDelayed(mAction, 500);
break;
case MotionEvent.ACTION_UP:
if (mHandler == null) return true;
mHandler.removeCallbacks(mAction);
mHandler = null;
break;
}
return false;
}
Runnable mAction = new Runnable() {
@Override public void run() {
System.out.println("Performing action...");
mHandler.postDelayed(this, 500);
}
};
});
这个想法很简单:发布一个Runnable
包含对 a 的重复操作Handler
当“向下”触摸动作发生时。之后就不要发帖了Runnable
再次直到“向上”触摸动作过去。这Runnable
将继续将自己发布到Handler
(当“向下”触摸动作仍在发生时),直到它被向上触摸动作移除 - 这就是启用“重复”方面的原因。
根据按钮的实际行为以及您所追求的 onclick/ontouch,您可能希望立即发布初始帖子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)