我无法在网上找到任何帮助来向我描述为什么“ACTION_DOWN”的延迟不起作用。只要我触摸图像,我的代码的其余部分就会执行。我的意图是放置在//附加代码和//结束附加代码注释之间。它是否需要放置在其他地方?提前致谢!OnTouchListener延迟不起作用
编辑:我会使用onLongClickListener,但我的目的是延长对象为了意图开始的时间。
mImage = (ImageView)MainActivity.this.findViewById(R.id.Floaterimg);
mImage.setOnTouchListener(new View.OnTouchListener() {
final Handler handler2 = new Handler();
Runnable mLongPressed = new Runnable() {
public void run() {
Log.i("", "Long press!");
}
};
@Override
public boolean onTouch(View v, MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN)
handler2.postDelayed(mLongPressed, 3000);
//additional code
//end of additional code
if((event.getAction() == MotionEvent.ACTION_MOVE)||
(event.getAction() == MotionEvent.ACTION_UP))
handler2.removeCallbacks(mLongPressed);
return false;
}
});
你有没有想过在3000毫秒之前执行ACTION_MOVE并删除回调? – Diego
我该如何解决这个问题?忍受着我,我只在一个星期左右的时间里涉足Android开发。 我把你的评论意味着我可能会无意中移动我的手指,所以我删除了MotionEven.ACTION_MOVE,但效果相同。 –
尝试在第二个条件中移除'event.getAction()== MotionEvent.ACTION_MOVE',并检查Runnable是否被执行。 – Diego