안드로이드 개발 질문/답변
(글 수 45,052)
썸네일 이미지들을 그리드뷰로 뿌려주었다가... 하나의 이미지가 선택되면, 풀 사이즈로 디테일 이미지를 보여주려고 합니다.
그리드뷰로 썸네일 이미지를 띄워주고 선택해서... 풀사이즈로 디테일 이미지를 보여주는 것 까지는 되었습니다만,
그 풀 사이즈로 보여주는 디테일 이미지에서 플리킹 이벤트를 넣으려고 합니다.
디테일 이미지에서 왼쪽이나 오른쪽으로 이벤트가 발생했을 때 바로 다음 이미지나 이전 이미지가 보여주게 만들고 싶어서,
디테일 이미지를 보여주는 레이아웃에 제스처 이벤트를 구현해서 제스처 이벤트가 발생하면 다음 이미지 / 이전 이미지를 보여주려고 했는데,
그 제스처 이벤트가 이미지 자체에서는 발생하지 않고... 이미지가 비어 있는 공간 (레이아웃) 에서만 발생하는 것 같습니다.
그래서 화면에 꽉 차는 이미지에서는 이벤트가 발생하지 않고 여유 공간이 있는 이미지에서는 이미지 이외 공간에서 이벤트가 발생합니다.
아, 이걸로 며칠째 방황중입니다.
어떻게 해야 하는건지 도움 부탁드립니다.
추가) 제스처 이벤트를 이미지에 걸수도 있나요? 제스처 리스너는.. setOn~ 할 수 있는 메서드가 없던데..




디테일 이미지 보여주는 액티비티에서
dispatchTouchEvent를 오버라이딩 하시면 됩니다.
아래는 제가 사용했던 소스입니다.
//좌우 스크롤을 만들어 봅시당 ㄴ ㅑㅎ ㅏㅎ ㅏ
//손이 닿았다 떨어진 부분의 x의 차이로 좌우 이동을 감지
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
switch(ev.getAction())
{
//손이 닿았다
case MotionEvent.ACTION_DOWN:
firstX = ev.getX();
break;
//손이 떨어졌다
case MotionEvent.ACTION_UP:
lastX = ev.getX();
//3분의 2드레그 처리
if(Math.abs(firstX - lastX) > ((size.getRight()/3)*2))
{
boolean plus = lastX - firstX < 0;
MoveNext(plus);
return true;
}
break;
}
return super.dispatchTouchEvent(ev);
}