只要拇指在我的imageview上,我就想循环执行一些连续的任务.一旦竖起大拇指,我想停止这项工作.为此,我在ACTION_DOWN和ACTION_UP上设置了一个标志,我正在取消该标志,以便循环可以停止.但是我的循环越来越无限.吐司在循环时也不会出现.任何帮助将不胜感激.谢谢!!
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;
这应该可以解决问题.我建议调用一个函数并在那里处理敬酒.
编辑:
正如@Chetan指出的那样,您必须返回true才能使onTouch正常工作.