안드로이드 개발 질문/답변
(글 수 45,052)
public boolean onTouch(View v, MotionEvent event) {
x = (int)event.getX(0);
y = (int)event.getY(0);
x2 = (int)event.getX(1);
y2 = (int)event.getY(1);
wWidth = mRelative.getWidth();
wHeight = mRelative.getHeight();
ivWidth = mIv.getWidth();
ivHeight = mIv.getHeight();
tvWidth = mTv.getWidth();
tvHeight = mTv.getHeight();
mLeft = mRelative.getLeft();
mTop = mRelative.getTop();
mRight = mRelative.getRight();
mBottom = mRelative.getBottom();
Log.e("mBottom","=="+mLeft);
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
selX = preX = x;
selY = preY = y;
Log.e("왼쪽",""+mLeft);
break;
case MotionEvent.ACTION_POINTER_DOWN :
mMultiTouchDistance = calMultiTouchDistance(event);
Log.e("왼쪽22222",""+mLeft);
break;
case MotionEvent.ACTION_MOVE:
Log.e("왼쪽333333",""+mLeft);
if(event.getPointerCount() == 1)
{
tx = x - preX;
ty = y - preY;
//떨림 방지.
if( ((tx > -allowGap) && (tx < allowGap)) && ((ty > -allowGap) && (ty < allowGap)) ){
return false;
}else{
tx = x - selX;
ty = y - selY;
mRelative.layout(mLeft + tx, mTop + ty, mRight + tx, mBottom + ty);
// Log.e("이동",": "+ x + " , " + selX + " , " +tx);
preX = x;
preY = y;
return true;
}
}
else if(event.getPointerCount() == 2)
{
preX = x;
preY = y;
double temp = calMultiTouchDistance(event);
if(temp > mMultiTouchDistance)
{
resizeView("up" , event);
}
else
{
resizeView("down" , event);
mMultiTouchDistance = temp;
}
}
break;
case MotionEvent.ACTION_UP :
Log.e("첫번째손","UP");
break;
case MotionEvent.ACTION_POINTER_UP:
Log.e("두번재손","POINTER_UP");
break;
}
return true;
}
위 코드에서 문제가 있습니다.
한손으로 이동후에 , 멀티터치로 확대를 시킬려고 하면..
좌표가..처음위치로 되돌아갑니다..
하려던거는 이동후에도 그자리에서 확대하면 그자리에서 확대가 되야하는데.
자꾸 처음시작 위치로 , 자꾸 가는겁니다..
레이아웃이 , x,y 좌표가 없어서
Layout.layout ...좌상우하 , ...패딩값에..이벤트x,y 값을 .. 더해서 ,이동하는식으로 했습니다.
위치 안바뀌게 위 소스..좀 봐주실분..답글 부탁들비니다..
보시며 mLeft ,..값..이 있습니다
왼쪽패딩값인데. 이 값이 확대할려고 하면..자꾸 0 으로 떨어집니다.ㅠㅠ
ps, 코드하이라이트가..소스 복사해서 붙여넣기 하는데..ㅡ.ㅡ 자꾸 저렇게 나와버리네요..;;