안드로이드 터치 영역 판단하기
안드로이드에서 특정 영역을 터치했는지 여부를 판단하려면, 터치 이벤트가 발생한 좌표를 확인하고 해당 좌표가 특정 영역 내에 있는지를 확인해야 합니다. 아래는 간단한 예시 코드로, `View` 내에서 특정 영역을 정의하고 터치 이벤트가 해당 영역 내에 발생했는지 여부를 판단하는 방법을 보여줍니다.
import android.content.Context;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
public class CustomTouchAreaView extends View {
private Rect touchArea; // 터치 영역을 정의할 Rect 객체
public CustomTouchAreaView(Context context) {
super(context);
// 터치 영역을 (100, 100, 400, 400)으로 정의
touchArea = new Rect(100, 100, 400, 400);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (isInTouchArea(x, y)) {
showToast("터치 다운 - 특정 영역 내");
}
break;
case MotionEvent.ACTION_MOVE:
if (isInTouchArea(x, y)) {
showToast("터치 이동 - 특정 영역 내");
}
break;
case MotionEvent.ACTION_UP:
if (isInTouchArea(x, y)) {
showToast("터치 업 - 특정 영역 내");
}
break;
}
return true; // 이벤트 처리를 계속하려면 true를 반환
}
private boolean isInTouchArea(float x, float y) {
return touchArea.contains((int) x, (int) y);
}
private void showToast(String message) {
Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
}
}
위 코드에서 `Rect` 객체를 사용하여 `touchArea`를 정의하고, `isInTouchArea` 메서드를 통해 주어진 좌표가 해당 영역 내에 있는지를 확인합니다. 이를 통해 특정 영역에 대한 터치 이벤트를 판단할 수 있습니다.
안드로이드 터치 위치 판단하기
안드로이드에서 터치 이벤트의 위치를 판단하려면 `MotionEvent` 객체를 사용하여 터치 이벤트의 X 및 Y 좌표를 얻어야 합니다. 아래는 간단한 예시 코드로, `onTouchEvent` 메서드 내에서 터치 이벤트의 위치를 어떻게 판단하는지를 보여줍니다.
import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
public class TouchPositionView extends View {
public TouchPositionView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX(); // 터치 이벤트의 X 좌표
float y = event.getY(); // 터치 이벤트의 Y 좌표
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
showToast("터치 다운 (Touch Down) - X: " + x + ", Y: " + y);
break;
case MotionEvent.ACTION_MOVE:
showToast("터치 이동 (Touch Move) - X: " + x + ", Y: " + y);
break;
case MotionEvent.ACTION_UP:
showToast("터치 업 (Touch Up) - X: " + x + ", Y: " + y);
break;
}
return true; // 이벤트 처리를 계속하려면 true를 반환
}
private void showToast(String message) {
Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
}
}
위 코드에서 `event.getX()`와 `event.getY()` 메서드를 사용하여 터치 이벤트의 X 및 Y 좌표를 가져옵니다. 이를 통해 터치 이벤트가 발생한 위치를 확인할 수 있습니다. 각각의 터치 액션에 따라 적절한 처리를 수행할 수 있습니다.
터치 타입 판단하기
안드로이드에서 터치 이벤트의 타입을 판단하려면 `MotionEvent` 객체를 사용합니다. `MotionEvent`는 사용자의 터치 및 모션 이벤트에 대한 정보를 포함하고 있습니다. 이 객체를 통해 터치 이벤트의 다양한 속성을 확인할 수 있습니다.
아래는 간단한 안드로이드 코드 예시로, 터치 이벤트의 타입을 판단하는 방법을 보여줍니다. 예를 들어, `onTouchEvent` 메서드 내에서 다음과 같이 사용할 수 있습니다:
import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
public class TouchTypeView extends View {
public TouchTypeView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
showToast("터치 다운 (Touch Down)");
break;
case MotionEvent.ACTION_MOVE:
showToast("터치 이동 (Touch Move)");
break;
case MotionEvent.ACTION_UP:
showToast("터치 업 (Touch Up)");
break;
}
return true; // 이벤트 처리를 계속하려면 true를 반환
}
private void showToast(String message) {
Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
}
}
이 코드에서 `MotionEvent.getAction()` 메서드를 사용하여 현재 이벤트의 액션(터치 이벤트의 종류)을 가져오고, 해당 액션에 따라 적절한 처리를 수행합니다. `MotionEvent` 클래스에는 다양한 액션 상수가 있으며, 필요에 따라 다양한 터치 이벤트를 처리할 수 있습니다.
또한, `onTouchEvent` 메서드에서 `return true;`를 사용하여 이벤트를 계속 처리하도록 설정하였습니다. 만약 `return false;`로 설정하면 해당 뷰가 터치 이벤트를 소비하지 않고 다른 뷰에게 전달하게 됩니다.
사각형 - Rect
android.graphics.Rect
intersect -- 사각 영역이 겹치는 경우를 판단
contains -- 점이나 면이 포함되는 경우를 판단
//
원 - Cicle
선택 좌표 x와 yd의 제곱의 합이 반지름 제곱의 합보다 작을 경우 포함된 것으로 판단
(cx-x)^2 +(cy-y)^2= r2
//
호 - arc -- 수식 어렵다 그냥 외우자.. =_=
deg = Math.atan2(x-cx, y-cy)*180 / Math.PI - 90;
if(deg<0) deg+=360;
-- (-90)은 컴퓨터의 각도와 계산법의 각도가 달라 보정값
-- 결과 값이 음수일 경우 기준범위인 360을 더해서 각도 확보
'study > TIP' 카테고리의 다른 글
curl 예 (0) | 2015.04.03 |
---|---|
자바스크립트 문자열로 함수 호출 (0) | 2014.07.23 |
pdo 에러관련 주의사항 (0) | 2012.04.13 |
print_r 깔끔하게 보기 (0) | 2012.04.12 |
php 문자열 함수 (0) | 2012.02.27 |