当我按住Android Activity中的按钮时,如何实现快速增量?因此,例如当我按住某个按钮时,我已经在EditText中设置的数字会快速增加。
非常感谢您的帮助。
答案 0 :(得分:0)
好吧,我会在onTouch方法中使用System.currentTimeMillis()。在TouchEvent.ACTION_DOWN的情况下:启动millis计数(使用自定义数学函数使用毫秒)并在TouchEvent.ACTION_UP中停止计数。
答案 1 :(得分:0)
您可以扩展TimerTask类并使用您想要的操作覆盖“run”方法。在这种情况下,“run”会增加EditText的文本。然后只需创建一个Timer并将其重载为TimerTask类。
示例:
import java.util.TimerTask;
public class MyTask extends TimerTask {
private Integer mIncrement = 0;
public MyTask() {
}
@Override
public void run() {
mIncrement++;
// Then notify the GUI somehow (Maybe with a Handler)
}
}
现在您只需要在按钮关闭时安排“MyTask”运行:
mButton.setOnTouchListener(
new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getPointerCount() > 0 && !mIncrementing) {
mIncrementing = true;
MyTask task = new MyTask();
mTimer = new Timer();
mTimer.scheduleAtFixedRate(task, 0, 10);
} else {
mIncrementing = false;
mTimer.cancel();
}
return true;
}
}
);
我希望这会有所帮助。有关更多信息,请参阅有关Timer的文档: http://developer.android.com/reference/java/util/Timer.html
另外,您可能会注意到无法在MyTask.run中设置EditText的文本值。这是因为Android不允许跨线程访问GUI元素。要更新EditText,您需要使用Handler传递消息,以告知主线程更新其值。