【发布时间】:2019-06-01 18:14:47
【问题描述】:
我正在尝试做一些非常简单的事情,但由于某种原因我无法让它工作。 我有两个圆形按钮。
-当我简单地单击顶部(绿色)按钮时,我希望按钮切换颜色并保持这种状态。
-如果我按住一个按钮 2 秒钟,我希望只要按住按钮,颜色就会交换,但一旦我松开按钮,就会恢复到原来的颜色。
我正在尝试使用 OnClickListener。我使用的开关有 2 种情况:MotionEvent.ACTION_DOWN 和 MotionEvent.ACTION_UP。 (见下面的代码)
为了获得按钮被按住的持续时间,我在 while 循环中使用 System.currentTimeMillis()(当按钮被按住时)-->(如果 timeElapsed > 2000){切换颜色}
完整代码如下:
greenbutton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
startTime = System.currentTimeMillis();
while (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
currentTime = System.currentTimeMillis();
elapsedTime = currentTime - startTime;
if (elapsedTime > 500) {
if (switched) {
revertButtons();
return true;
} else {
switchButtons();
return true;
}
}
}
case MotionEvent.ACTION_UP:
if (switched) {
revertButtons();
elapsedTime = 0;
currentTime = 0;
startTime = 0;
return true;
} else {
switchButtons();
elapsedTime = 0;
currentTime = 0;
startTime = 0;
return true;
}
}
return false;
}
});
【问题讨论】:
-
您遇到了什么问题?代码不起作用,或者您或您遇到任何异常或错误?
-
该代码适用于点击,但 UI 中存在暂停。我有一个动画背景,当我点击时,动画会暂停片刻。另外,当我长时间按住按钮时,什么也没有发生。
-
检查答案
-
您必须为该按钮设置 onTouchListener 。并在 ACTION_DOWN 和 ACTION_UP 之间停止|启动计时器
标签: java android ontouchlistener