ViewPager를 사용해서 이미지 갤러리를 구현하려고 합니다.
현재 currentItem 이미지에 멀티 터치로 Image Zoom 기능을 구현하고 싶은데요.
터치 이벤트는 받아오는데 Image Zoom이 안됩니다.
제가 잘못 구현한걸까요??
View v = null;
ImageView imageVIew = null;
@Override
public Object instantiateItem( ... ){
v = mInflater.inflate(R.layout.test, null);
imageVIew = (ImageView)v.findViewById(R.id.imageVIew);
imageView.setOnTouchListener(zoomTouch);
imageView.setBackgroundResource(R.drawable.test);
((ViewPager)mPager).addView(v,0);
return v;
}
View.OnTouchListener zoomTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
ImageView imageView = (ImageView)v;
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
mode = DRAG;
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist > 10f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY() - start.y);
}
else if (mode == ZOOM) {
float newDist = spacing(event);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldDist;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
// 매트릭스 값 튜닝.
imageView.setImageMatrix(matrix);
return true;
}
};
아시는 분 계시면 알려주세요 ㅠㅠ




항상 adapterView 의 종류들은, adapter 외부에서 내부의 아이템들에 대한 UI 변경시 적용이 안되는 문제가 존재하죠. 비슷한 경우로 보이네요. 제가 보기엔, 쉽지않을거 같습니다. adapter 가 터치 이벤트에 반응해서 현재 선택된 아이템만 onDraw 를 호출해 주어야 할듯 하다는.. 그래서 adapterView 클래스 자체를 오버라이드 하셔야 할 것 같습니다. 다른 대안으로는, 현재의 아이템에 singleTap 동작시 상세보기에 들어가고, 상세보기에서만 줌인/줌아웃 지원을 하는 방법이 있겠네요.