안드로이드 개발 질문/답변
(글 수 45,052)
WebView 에서 내비게이션을 위해서 다음과 같이 코딩했습니다.
up 과 down 은 잘 잡아내는데요. left 와 right 은 전혀 잡지를 못하네요.
게시판에서 x, y 좌표를 비교해서 하라는 글들이 보여서..저도 이렇게 했지만.
이게 정석인지.. 아니면 WebView 에서 Gesture detetor 를 사용해서 상하좌우를
detect 해야 하는건지 모르겠네요.
제가 몰 잘못했는지 알려주시면 감사하겠습니다.
((WebView) findViewById(R.id.WebView01)).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downXValue = event.getX();
downYValue = event.getY();
break;
case MotionEvent.ACTION_UP:
upXValue = event.getX();
upYValue = event.getY();
if (downXValue > upXValue)
((TextView) findViewById(R.id.TextView1)).setText("left");
if (downXValue < upXValue)
((TextView) findViewById(R.id.TextView1)).setText("right");
if (downYValue > upYValue)
((TextView) findViewById(R.id.TextView1)).setText("up");
if (downYValue < upYValue)
((TextView) findViewById(R.id.TextView1)).setText("down");
break;
}
return false;
}
});
up 과 down 은 잘 잡아내는데요. left 와 right 은 전혀 잡지를 못하네요.
게시판에서 x, y 좌표를 비교해서 하라는 글들이 보여서..저도 이렇게 했지만.
이게 정석인지.. 아니면 WebView 에서 Gesture detetor 를 사용해서 상하좌우를
detect 해야 하는건지 모르겠네요.
제가 몰 잘못했는지 알려주시면 감사하겠습니다.
((WebView) findViewById(R.id.WebView01)).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downXValue = event.getX();
downYValue = event.getY();
break;
case MotionEvent.ACTION_UP:
upXValue = event.getX();
upYValue = event.getY();
if (downXValue > upXValue)
((TextView) findViewById(R.id.TextView1)).setText("left");
if (downXValue < upXValue)
((TextView) findViewById(R.id.TextView1)).setText("right");
if (downYValue > upYValue)
((TextView) findViewById(R.id.TextView1)).setText("up");
if (downYValue < upYValue)
((TextView) findViewById(R.id.TextView1)).setText("down");
break;
}
return false;
}
});
Textview 에 좌표값을 찍어서 보니..다운과 업에서의 값차이가 살짝 터치를 해도 보통 100 이상 벌어지네요.
그래서, 시작값 + 100 을 해서 비교하니까..잘 되네요. 근데...이게 왠지...부정확한 꽁수인것 같아서..
매우 찜찜하네요...왠지...gesture detector 로 하면... 좀더...정확하고 예리하게..up, down, left, right 방향을 알려줄것 같은데...
괜한 뻘짓을 하는건 아닌지..모르겠네요.
((WebView) findViewById(R.id.WebView01)).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downXValue = event.getX();
downYValue = event.getY();
((TextView) findViewById(R.id.TextView1)).setText("DX:"+Double.toString(downXValue));
((TextView) findViewById(R.id.TextView3)).setText("DY:"+Double.toString(downYValue));
break;
case MotionEvent.ACTION_UP:
upXValue = event.getX();
upYValue = event.getY();
((TextView) findViewById(R.id.TextView2)).setText("UX:"+Double.toString(upXValue));
((TextView) findViewById(R.id.TextView4)).setText("UY:"+Double.toString(upYValue));
if (downXValue > upXValue+100)
((TextView) findViewById(R.id.TextView0)).setText("left");
if (downXValue+100 < upXValue)
((TextView) findViewById(R.id.TextView0)).setText("right");
if (downYValue > upYValue+100)
((TextView) findViewById(R.id.TextView0)).setText("up");
if (downYValue+100 < upYValue)
((TextView) findViewById(R.id.TextView0)).setText("down");
break;
}
return false;
}