안드로이드 개발 질문/답변
(글 수 45,052)
이미지가 화면 밖으로 안나가게 하는 코드 질문 올렸다가
개굴딱지님과 후유 님의 도움으로 조건문은 완성했습니다.
이제 화면 밖으로는 나가지 않지만 범위를 벗어나면 멈춰버립니다.
else문에 어떻게 처리를 해주어야 다시 움직일까요?
View.OnTouchListener touchListener = new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
x = (int)event.getX();
Log.e("tag", "x"+x);
y = (int)event.getY();
Log.e("tag", "y"+y);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setOnLongClickListener(longClickListener);
break;
case MotionEvent.ACTION_MOVE:
if(selectImage == (ImageView)v){
dx = x - selX;
dy = y - selY;
if(selectImage.getTop() > 0 && selectImage.getBottom() + selectImage.getHeight()/2 < displayHeight
&& selectImage.getLeft() > 0 && selectImage.getRight() < displayWidth){
selectImage.layout(selectImage.getLeft() + dx, selectImage.getTop() + dy,
selectImage.getRight() + dx, selectImage.getBottom() + dy);
}
preX = x;
preY = y;
return true;
}
break;
(저는 onDraw로 이미지를 그린 것이 아니고 이미지뷰로 그림을 그렸습니다. 그래서 invalidate()는 안됩니다.)
저 if문 다음에 else문을 넣어서 화면 범위 벗어났을때의 처리를 해줘어야할것 같은데
else{
selectImage.layout(selectImage.getLeft() + dx, selectImage.getTop() + dy,
selectImage.getRight() + dx, selectImage.getBottom() + dy);
}이렇게 하면 그냥 조건문 없는것과 똑같이 화면 밖으로 나가버립니다.
else문이 없으면 화면 경계에 닿으면 멈춥니다.
고수분들의 조언 부탁드립니다.




x와 y를 별도로 조건을 걸고 별도로 계산하셔야 하지 않을까요?
아마 멈춘다는 말씀은...
예를들면 x로 끝까지 보낸 다음에 아래로 슬슬슬 내려보면 안따라온다 라는 말씀같습니다.
x로 끝까지 가서 다시 x좌표가 0인쪽으로 땡기면 쫓아 오겠죠...
조건문을 걸때 x좌표 초과했을때 x좌표 끝고정 하고,
위의 조건문과 관계없이 y좌표 초과했을때 y좌표 끝 고정해서 나중에 그 좌표대로 그리면 됩니다.
if (x좌표 초과?)
{
}else{
}
if (y좌표 초과?){
}else{
}
(x좌표, y좌표) 그리기