본문 바로가기

안드로이드

제스처 이벤트

반응형

이벤트 종류

터치 이벤트 - 화면을 손가락으로 터치

키 이벤트 - 키패드, 하드웨어 버튼을 ㅜㄴ름

제스처 이벤트 - 터치 이벤트 도중 일정 패턴의 움직임

포커스 - 뷰 객체가 포커스를 받거나 잃음

화면 방향 변경 - 화면 방향(가로, 세로) 변경

 

 

 

package com.example.a11_sampleevent;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

import static java.sql.DriverManager.println;

public class MainActivity extends AppCompatActivity {

//    https://velog.io/@hanna2100/안드로이드-터치-이벤트의-흐름

    TextView textView;

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

        textView = findViewById(R.id.textView);

        View view = findViewById(R.id.view);

        view.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                int action = event.getAction();

                float curX = event.getX();
                float curY = event.getY();

                if (action == event.ACTION_DOWN) {
                    println("손가락 눌림 : " + curX + ", " + curY);
                } else if (action == event.ACTION_MOVE) {
                    println("손가락 움직임 : " + curX + ", " + curY);
                } else if (action == event.ACTION_UP) {
                    println("손가락 뗌 : " + curX + ", " + curY);
                }

                return true;
            }
        }); // view.setOn...

//        ////////////////////////////////////////////////////////////////////////////////
//        제스처 디텍터 객체 선언
        GestureDetector detector;

        detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
            @Override
            public boolean onDown(MotionEvent e) {
//                화면이 눌림
                println("onDown() 호출됨");
                return true;
            }

            @Override
            public void onShowPress(MotionEvent e) {
//                화면이; 눌렸다 떼어짐
                println("onShowPress() 호출됨");
            }

            @Override
            public boolean onSingleTapUp(MotionEvent e) {
//                화면이 한 손가락으로 눌렸다 떼어짐
                println("onSingleTapUp() 호출됨");
                return true;
            }

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//                화면이 눌린 채 일정 속도와 방향으로 움직임
                println("onScroll() 호출됨 : " + distanceX + ", " + distanceY);
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e) {
//                화면이 오랫동안 눌림
                println("onLongPress() 호출됨");
            }

            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//                화면이 눌린 채 가속도를 붙여 손가락을 움직였다 뗌
                println("onFling() 호출됨 : " + velocityX + ", " + velocityY);
                return true;
            }
        }); // detector = new Gesture...

        View view2 = findViewById(R.id.view2);
        view2.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
//                터치 이벤트를 detector에게 넘긴다
                detector.onTouchEvent(event);
                return true;
            }
        });

    }

    public void println(String data) {
        textView.append(data + "\n");
    }

}
반응형

'안드로이드' 카테고리의 다른 글

단말 방향 전환 이벤트  (0) 2021.10.11
키 이벤트  (0) 2021.10.11
터치 이벤트  (0) 2021.10.11
SMS 입력 화면 만들고 글자 수 표현  (0) 2021.10.11
두 개의 이미지뷰에 이미지 번갈아 보여주기  (0) 2021.10.11