펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

이 글에서는 

터치이벤트(TouchEvent)로 비트맵이미지 이동시키기

에서 발전하여 특정 영역 밖으로 이미지가 이동하지 않도록 하는 방법을 알아보겠다. 아주 간단하다.


화면 영역 밖으로 나가지 않게 하려면 단말기의 Height와 Width를 받아오면 되고, 특정 수치를 부여하려면

이런 과정이 필요없다.

Display dis = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();

int width = dis.getWidth();

int height = dis.getHeighy();


그리고 다음과 같은 조건을 준다.

@Override

public boolean onTouchEvent(MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

//디스플레이 영역 설정. 이미지X,Y는 이미지의 X좌표,Y좌표를 뜻함

if (이미지X >= 0 && 이미지X <= width && 이미지Y >= 0 && 이미지Y <= height) {

//그리기 실행

}

//여기

   }

}

이상태로 끝내버리면 위 조건이 false, 즉 화면영역 밖으로 좌표가 튀어나갔을경우 그리기가 멈춰버린다. 이미 값이

튀어 나갔기때문에 true가 들어오지 않는다. 그러므로

//여기 위치에서 이미지를 영역 안으로 새로고침해준다.

if (이미지X < 0) {

이미지X = 0;

}

if (이미지X > width) {

이미지X = width

}

if (이미지Y < 0) {

이미지Y = 0;

}

if (이미지Y > height) {

이미지Y = height

}


이렇게 해주면 이미지가 조건을 벗어나게 되더라도 새로고침하여 그 다음 입력이 true가 되므로,

실행을 이어서 할 수 있다.


단말 전체가아니라 특정 영역에서만 움직이게 하고싶다면 width,height는 상황에 맞게 조절하면 된다.


문의점은 댓글로 !