본문 바로가기
안드로이드 자바

[Java][Android] 터치 이벤트 좌표 추적하기

by teamnova 2025. 2. 13.
728x90

안녕하세요

오늘은 안드로이드에서 터치 이벤트 좌표를 추적하여 표시하고, 그리는 기능을 구현해보도록 하겠습니다.

 

우선 전체 코드입니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
  }
}

 

 

TouchTrackingView.java

public class TouchTrackingView extends View {
  private Paint paint;
  private Paint textPaint;
  private List<float[]> touchPoints = new ArrayList<>();

  public TouchTrackingView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
  }

  private void init() {
    paint = new Paint();
    paint.setColor(Color.RED);
    paint.setStrokeWidth(8);
    paint.setStyle(Paint.Style.STROKE);

    textPaint = new Paint();
    textPaint.setColor(Color.BLUE);
    textPaint.setTextSize(50);
  }

  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    // 터치한 모든 점을 연결하여 선을 그림
    for (int i = 1; i < touchPoints.size(); i++) {
      float[] prev = touchPoints.get(i - 1);
      float[] curr = touchPoints.get(i);
      canvas.drawLine(prev[0], prev[1], curr[0], curr[1], paint);

      // 터치 위치 좌표 텍스트 표시
      canvas.drawText("(" + (int) curr[0] + ", " + (int) curr[1] + ")", curr[0], curr[1] - 20, textPaint);
    }
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
    float x = event.getX();
    float y = event.getY();

    if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
      touchPoints.add(new float[]{x, y});
      invalidate(); // 화면 다시 그리기
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
      // 터치 종료 시 점 리스트 초기화
      touchPoints.clear();
    }
    return true;
  }
}

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">


  <com.example.mytestapp.TouchTrackingView
    android:id="@+id/touchTrackingView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFF0"/>
</RelativeLayout>

(com.example.프로젝트명.TouchTrackingView) 입니다. 현재 프로젝트명을 넣어주시면 됩니다. 저의 경우에는 mytestapp 입니다.

 

이렇게 하면,
onTouchEvent() 에서 사용자의 터치 좌표를 실시간으로 추적합니다.

그리고 터치한 위치에 좌표를 텍스트로 표시하고 Canvas 기능을 활용해 이동 경로를 그리도록 구현했습니다.

 

이렇게 터치 좌표를 활용하여 다양한 기능을 구현해보시길 바랍니다.

 

시연 영상 입니다.