【发布时间】:2016-12-12 21:27:08
【问题描述】:
所以我试图在按钮上显示用户开始按下它的时间,这是我的代码:
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
long eventDuration;
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
isDown = true;
break;
case MotionEvent.ACTION_UP:
isDown = false;
break;
default:
break;
}
eventDuration = motionEvent.getEventTime() - motionEvent.getDownTime();
btn.setText(String.valueOf(eventDuration));
return true;
}
});
如果用户按住按钮并且不移动手指,则代码正在工作,但按下时间的值不会更新,因为没有诸如“MotionEvent.ACTION_HOLD”之类的动作。即使用户没有移动手指,我也希望该值不断更新。
我尝试在每次 Action 为“MotionEvent.ACTION_DOWN”时运行一个方法
while(isDown){
eventDuration = motionEvent.getEventTime() - motionEvent.getDownTime();
btn.setText(String.valueOf(eventDuration));
}
但是没有工作,while 循环没有停止,isDown 保持了它的最后一个值true。谁能告诉我如何让它工作?谢谢!
【问题讨论】:
标签: android listener android-button ontouchlistener motionevent