单击按钮时快速增量

时间:2011-07-22 14:53:50

标签: android

当我按住Android Activity中的按钮时,如何实现快速增量?因此,例如当我按住某个按钮时,我已经在EditText中设置的数字会快速增加。

非常感谢您的帮助。

2 个答案:

答案 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传递消息,以告知主线程更新其值。