只要拇指在我的 ImageView 上,我就想循环执行一些连续的任务。一旦竖起大拇指,我想停止这项工作。为此,我在 ACTION_DOWN 和 ACTION_UP 上设置了一个标志,我正在取消该标志,以便循环可以停止。但是我的循环变得无限了。此外,Toasts 在循环时不会出现。任何帮助将不胜感激。谢谢!!
ivThumb.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Toast.makeText(c, "action down", Toast.LENGTH_SHORT).show();
ivCharger.setVisibility(View.VISIBLE);
tvCharging.setVisibility(View.VISIBLE);
flag = true;
// while (flag){
// Toast.makeText(c, "hello", Toast.LENGTH_SHORT).show();
//
// }
}
else if (event.getAction() == MotionEvent.ACTION_MOVE){
Toast.makeText(c, "move", Toast.LENGTH_SHORT).show();
}
else if (event.getAction() == MotionEvent.ACTION_UP) {
Toast.makeText(c, "aCTION UP", Toast.LENGTH_SHORT).show();
flag = false;
ivCharger.setVisibility(View.GONE);
tvCharging.setVisibility(View.GONE);
//ivBattery.setImageResource(R.drawable.orange);
}
return true;
}
});
最佳答案
使用开关
并添加setPressed
参数,
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
ivThumb.setPressed(true);
//Your Function
break;
case MotionEvent.ACTION_MOVE:
//Your Function
break;
case MotionEvent.ACTION_UP:
//Your Function
ivThumb.setPressed(false);
invalidate();
break;
这应该可以解决问题。我建议调用一个函数并在那里处理 toast 。
编辑:
因为,@Chetan 指出你返回的应该是 true
才能使 onTouch
工作。
关于android - Android 中的 ACTION_DOWN 事件无法循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364406/