webview에서 1초안에 다시한번 터치하면 터치가 인식되지 않도록 하고 싶습니다.
제가 생각한 소스는
webview.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int time = 0;
Calendar c = Calendar.getInstance();
time = c.get(Calendar.SECOND);
Log.i("onTouch", time+"second"+" temp"+temp);
if(time==temp){
webview.setClickable(false);
Log.e("clickable", "false");
}else{
temp = time;
webview.setClickable(true);
Log.e("clickable", "ture");
}
return false;
}
});
였는데 계속 터치가 되네요? 뭐가 잘못된걸까요?
폭풍님 너무 흥분을...ㅋ터치리스너 막는건 핸들러에 sendmesagedelay를 이용하여 시간을 주시고 flag값 변화로 터치를 막으면 쉽습니다~
터치시스너에 if(flag == false) return;
1) 터치시 flag = false;
2) 터치 리스너 안에서 핸들러에 메세지를 딜레이를 줘서 보낸다.(1000ms)
3) 핸들러에서 flag= true
4) 1초뒤엔 터치가 먹겠죵
빵강가면님이 말씀해주신대로 했는데요.
webview.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(click==true)
return false;
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
webview.setClickable(false);//안먹음
handler.sendEmptyMessageDelayed(1, 3000);
}
return false;
}
});
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what)
{
case 1:
webview.setClickable(true);
click = true;
break;
}
}
};
이런식으로 했는데요. 이렇게 하면 핸들러를 호출하는 경우일때 그러니까 click이 false일때는 return을 true로 주는거 아닌가요? 근데 그렇게 하니 아예 터치이벤트가 안먹어 버려서 일단 false로 줬는데 뭐가 틀린걸까요ㅡㅡ; click은 기본값이 false입니다.




비교문안에 리턴시켜보세요